김보안의 블로깅
  • 🏠 Home
  • 📚 Project
    • Blockchain
      • 🎦 PickMe
      • 🎦 IoTC
      • 🎦 Blackchain
      • 📃 Gemology
      • 🎦 PickMe
      • 🎦 PickMe
    • AI
      • 👋 A.I. Dream Reader
      • 🎦 A.I. Dream Reader
    • Security
      • 🎦 SNAC
    • Education
      • 🎦 Smart Lecture
  • 🤸‍♂ Hobby
    • Music
      • Violin
      • Guitar
      • Piano
      • Drum
    • Flower
      • Flower Certificate
    • Sport
      • Ski
      • Skateboard
      • Golf
      • Boxing

2019년 3월 21일 목요일

회사 프록시와 인증서에 고통받는 그대를 위한 글 (Bash, Gradle, Python, wget, nodejs(npm), apt-get, cURL, git, yarn, androidStudio)

 SecureKim     오후 8:36     기업, 프록시, 회사, android studio, apt-get, Bash, cURL, git, Gradle, Node.js, npm, proxy, wget, yarn     18 comments   


대기업에 입사하면 장단점이 있는데,

단점 중에 하나가 회사에서 프록시를 사용하여 트래픽 감시를 하므로 프록시 설정을 해주어야 한다는 점 입니다.

특히, 회사에서는 https 트래픽도 감시를 하므로 인증서도 설정해 주어야 합니다.

그런데 문제는, 각 프로그램마다 또 인증서와 프록시 설정을 따로 해줘야 하는 경우가 많다는 것입니다.

그래서 항상 설정 할 때마다 고통을 받고는 하는데요,

특히 입사 초반에는 특별한 이유 없이 안되는 것처럼 느껴져 시간 낭비와 짜증을 불러 일으키곤 합니다.


각 프로그램별 정리를 해 보았습니다.

SERVER 는 프록시 서버 + 포트
CERT 는 인증서 명을 뜻합니다.

strict ssl false 어쩌고 하는 옵션은 모두 인증서 검사를 안하겠다는 것이며,
MITM 의 위험을 감수한다는 뜻입니다. (어차피 프록시 서버에서 MITM 할거지만..)

기본적으로 우분투 대상이며, 오타가 있을 수 있으니 유의하시기 바랍니다.


** Bash (Lin)

sudo vi /root/.bashrc
export http_proxy="SERVER"
export https_proxy="SERVER"
export ftp_proxy="SERVER"

sudo mkdir /usr/share/ca-certificates/extra
sudo cp CERT /usr/share/ca-certificates/extra/CERT
sudo dpkg-reconfigure ca-certificates

cat CERT >> /etc/ssl/certs/ca-certificates.crt


** Gradle (WIN)

C:\Users\YOURID\.gradle\gradle.properties 생성

systemProp.proxySet="true"
systemProp.http.keepAlive="true"
systemProp.http.proxyHost=SERVERHOST
systemProp.http.proxyPort=SERVERPORT

systemProp.https.keepAlive="true"
systemProp.https.proxyHost=SERVERHOST
systemProp.https.proxyPort=SERVERPORT
systemProp.https.proxyUser=USERNAME
systemProp.https.proxyPassword=PASSWORD
systemProp.https.nonProxyHosts="local.net|some.host.com"

keytool -importcert -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -storepass changeit -trustcacerts -alias "My PROXY" -file CERT


** Python (Win)

https_proxy 환경 변수에 프록시 서버 주소 설정
PIP_CERT 환경 변수에 인증서 설정

잘 안되는 경우
pip --cert CERT install <원하는 패키지>



** wget (Lin)

vi ~/.wgetrc
use_proxy=yes
http_proxy=SERVER
https_proxy=SERVER
ca_certificate=CERT


** nodejs

npm config set https-proxy SERVER --global
npm config set http-proxy SERVER --global
npm config set cafile CERT

그래도 잘 안될 땐 눈물을 머금고
npm config set strict-ssl false --global
npm config set registry http://registry.npmjs.org/ --global

윈도우에서 에러 날때 :
VCTargetsPath 환경변수에 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140
npm install java

** apt-get (Lin)

sudo vi /etc/apt/apt.conf
Acquire::http::Proxy "SERVER";
Acquire::https::Proxy "SERVER";

우분투에서 뭔가 잘 안된다면 kr.archive.ubuntu 를 ftp.daum.net 으로 변경해 봅시다.
sudo vi /etc/apt/sources.list
:1,$ s/kr.archive.ubuntu.com/ftp.daum.net/g

sudo apt-get update

** cURL (Lin)

sudo vi /etc/ssl/certs/ca-certificates.crt 파일에
CERT 내용 add ( cat CERT >> /etc/ssl/certs/ca-certificates.crt )

** git

sudo git config --global http.proxy SERVER
sudo git config --system http.sslcainfo CERT


** npm

npm config set proxy SERVER
npm config set https-proxy SERVER
npm config set cafile CERT

npm --add-python-to-path='true' --debug install --global windows-build-tools

그래도 잘 안되면 눈물을 머금고
npm config set "strict-ssl" false -g

** yarn

yarn config set proxy SERVER
yarn config set https-proxy SERVER

그래도 잘 안되면 눈물을 머금고
yarn config set "strict-ssl" false -g
set NODE_TLS_REJECT_UNAUTHORIZED=0
export NODE_TLS_REJECT_UNAUTHORIZED=0

** Android Studio (Win)

기본적으로 프록시 설정이 쉽게 잘 되어 있습니다만... 인증서 설정은 아니죠
C:\Program Files\Android\Android Studio\jre\bin>keytool.exe -import -alias proxycert -file CERT -keystore ../jre/lib/security/cacerts






  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
이메일로 전송BlogThis!X에 공유Facebook에서 공유
최근 게시물 이전 게시물 홈

댓글 18개:

  1. 익명2020년 4월 18일 오후 11:25

    덕분에 구원받았습니다.

    답글삭제
    답글
    1. SecureKim2020년 5월 12일 오후 4:25

      잘 해결되셔서 다행이네요 :)

      삭제
      답글
        답글
    2. 답글
  2. Unknown2020년 6월 3일 오전 7:09

    관련해서 도움을받고싶습니다... 댓글로 질문해도될까요?...

    답글삭제
    답글
    1. SecureKim2020년 6월 22일 오후 9:36

      넵넵! 질문주세요!

      삭제
      답글
        답글
    2. 답글
  3. Unknown2020년 6월 3일 오전 7:10

    안녕하세요... 도움되는글 감사합니다.. 혹시 질문드려도될까요

    답글삭제
    답글
      답글
  4. Unknown2020년 6월 3일 오후 12:13

    어라..

    답글삭제
    답글
      답글
  5. Evan De2020년 11월 25일 오후 5:15

    좋은글 감사합니다.
    그런데 이 글에서 말씀해주시는 SERVER 값이나 CERT 값을 제 컴퓨터에서 어떻게 찾아야 하나요?
    구글링한 바로는 SERVER는 제어판-인터넷옵션-연결-LAN설정-자동 구성 스크립트 사용의 주소 인 것 같은데
    CERT는 어떤걸 적어야하는지 못찾겠네요 ㅜㅜ 도움 받을 수 있을까요?

    답글삭제
    답글
    1. SecureKim2020년 12월 8일 오전 2:24

      답이 늦어 죄송합니다. SERVER는 말씀하신 것처럼 회사 프록시의 주소입니다. CERT는 회사 프록시 서버의 인증서 파일인데요, 이것은 회사에서 지급했을겁니다. 만약에 없다면 와이어샤크로 패킷을 덤프해서 통신 중간에 회사 인증서 오는걸 파일화 해도 되고, 인터넷이 잘 되신다면 분명 회사 인증서가 이미 추가되어 있을 테니 시작-실행에서 certmgr.msc 를 실행한 후 신뢰할수있는 루트 인증기관 - 인증서 에 찾아보면 있을겁니다. 개념을 설명하자면... 회사 프록시 서버는 마치 해커처럼 님과 실제 서버간의 암호화 통신을 엿들으려고 항상 중간자 공격을 하게 되는데, 이 때 님은 공격당하는건 알지만 회사가 하는 것이니 경고를 띄우거나 막지 말고 어쩔 수 없이 허가를 해야합니다(허가 안하면 인터넷이 안됨ㅜㅠ) 그래서 지금 작업은 회사가 보내주는 공격용 인증서의 최상위 인증서를 추가 하는 것입니다. 그러면 회사는 자유롭게 님과 다른 서버간의 통신을 엿들을 수 있게 됩니다. 각 프로그램마다 이러한 처리를 해주지 않으면 프로그램은 이를 공격으로 알고 막아서 통신이 안되는 것입니다.

      삭제
      답글
        답글
    2. 답글
  6. Unknown2021년 3월 9일 오전 11:38

    저는 모든 케이스에서 다 안됐는데 제일 마지막 옵션(export NODE_TLS_REJECT_UNAUTHORIZED=0)으로 하니깐 되네요. 단, 제일 첫글자를 소문자로 입력하지 않으면 command not found: Export 라는 응답이 나옵니다

    답글삭제
    답글
    1. SecureKim2021년 3월 10일 오후 9:01

      그렇군요~! 감사합니다.

      삭제
      답글
        답글
    2. 답글
  7. 동서남북으로 울부짖었다2021년 12월 22일 오후 6:03

    세상에서 제일 감사합니다

    답글삭제
    답글
    1. SecureKim2021년 12월 22일 오후 8:59

      방문 감사합니다 :)

      삭제
      답글
        답글
    2. 답글
  8. 익명2022년 5월 11일 오전 9:41

    정말정말 감사합니다. 외부 API요청하는데 같은소스, 같은컴퓨터로 실행하는데 사내에서만 안되서 고생했습니다.

    답글삭제
    답글
    1. SecureKim2022년 9월 15일 오전 10:52

      감사합니다. 사내에서 가이드를 제공해야 할텐데... 도입만 하고 나몰라라 ㅎㅎ

      삭제
      답글
        답글
    2. 답글
  9. 익명2022년 5월 11일 오전 9:41

    정말정말 감사합니다.

    답글삭제
    답글
    1. SecureKim2022년 9월 15일 오전 10:52

      방문 감사합니다 :)

      삭제
      답글
        답글
    2. 답글
  10. 익명2022년 7월 14일 오후 6:44

    선생님.. 감사합니다.. 감사합니다.. 혹시 strict ssl false를 해도 보안에는 문제가 없는거겠지요?

    답글삭제
    답글
    1. SecureKim2022년 9월 15일 오전 10:54

      사내에서 누군가 네트워크 공격을 한다는 가정하에, 중간자 공격에 취약 할 수 있습니다.

      삭제
      답글
        답글
    2. 답글
댓글 추가
더 로드하기...

페이지

  • 홈
  • Hobby

Categories

  • AI
  • AWS
  • Blockchain
  • Hardware
  • Javascript
  • Node.js
  • Plasma
  • Security
  • Study
  • Video
  • android
  • mysql
  • review
  • windows

Popular Posts

  • 블랙보드 강의 녹화 영상 다운로드 가능한 방법 (노설치)
    별도의 설치도 필요 없고 아주 쉽습니다. 구글 크롬브라우저 에서 블랙보드 녹화 영상에  다운로드 가능한 메뉴가 나오게 하는 코드입니다.  먼저 블랙보드 강의자료에 입장하고, 재생 버튼을 클릭 하지 않은 상태로 F12 를 입력합니다. 재생을 클릭하지 마...
  • 다빈치리졸브로 영상의 음성 보정 (잡음 노이즈 없애기)
      잡음 없애는 방법 1. 음악 쪽 들어가서 음악에서 소스 우클릭 - Normalize Audio Levels 2. 우측의 Mixer에서 Dynamics 더블클릭, Effects아래 +누르고 Metering에 Meter 그럼 아래처럼 나오는데  Gat...
  • 회사 프록시와 인증서에 고통받는 그대를 위한 글 (Bash, Gradle, Python, wget, nodejs(npm), apt-get, cURL, git, yarn, androidStudio)
    대기업에 입사하면 장단점이 있는데, 단점 중에 하나가 회사에서 프록시를 사용하여 트래픽 감시를 하므로 프록시 설정을 해주어야 한다는 점 입니다. 특히, 회사에서는 https 트래픽도 감시를 하므로 인증서도 설정해 주어야 합니다. 그런데 문...

Blog Archive

  • ►  2024 (2)
    • ►  11월 (2)
  • ►  2023 (2)
    • ►  10월 (1)
    • ►  1월 (1)
  • ►  2022 (10)
    • ►  12월 (1)
    • ►  11월 (3)
    • ►  9월 (1)
    • ►  8월 (1)
    • ►  6월 (2)
    • ►  3월 (2)
  • ►  2021 (9)
    • ►  12월 (3)
    • ►  11월 (1)
    • ►  6월 (1)
    • ►  5월 (2)
    • ►  4월 (2)
  • ►  2020 (12)
    • ►  10월 (1)
    • ►  9월 (2)
    • ►  7월 (1)
    • ►  6월 (1)
    • ►  5월 (5)
    • ►  4월 (1)
    • ►  2월 (1)
  • ▼  2019 (14)
    • ►  10월 (2)
    • ►  7월 (1)
    • ▼  3월 (4)
      • 루트스탁 (RSK) 개념 잡기
      • Coin Wallet Account - 12 단어의 비밀 (mnemonic 복구 원리)
      • 루트스탁(RSK) 실전 - Bitcoin Smartcontract
      • 회사 프록시와 인증서에 고통받는 그대를 위한 글 (Bash, Gradle, Python, ...
    • ►  2월 (2)
    • ►  1월 (5)
  • ►  2018 (14)
    • ►  12월 (2)
    • ►  11월 (4)
    • ►  10월 (1)
    • ►  8월 (2)
    • ►  5월 (4)
    • ►  1월 (1)
  • ►  2017 (12)
    • ►  10월 (2)
    • ►  9월 (9)
    • ►  5월 (1)
  • ►  2016 (8)
    • ►  10월 (2)
    • ►  8월 (1)
    • ►  6월 (1)
    • ►  1월 (4)
  • ►  2015 (6)
    • ►  12월 (3)
    • ►  10월 (1)
    • ►  6월 (1)
    • ►  5월 (1)
  • ►  2014 (10)
    • ►  11월 (1)
    • ►  9월 (1)
    • ►  7월 (1)
    • ►  6월 (1)
    • ►  5월 (3)
    • ►  4월 (1)
    • ►  3월 (2)
  • ►  2013 (28)
    • ►  12월 (3)
    • ►  11월 (6)
    • ►  10월 (6)
    • ►  9월 (6)
    • ►  8월 (1)
    • ►  7월 (3)
    • ►  6월 (3)

구독

글
Atom
글
댓글
Atom
댓글

로드 중입니다...

각오

직접 해보지 않은 것은 포스팅 하지 않겠습니다.

Copyright © 김보안의 블로깅 | Powered by Blogger
Design by Hardeep Asrani | Blogger Theme by NewBloggerThemes.com | Distributed By Gooyaabi Templates