대기업에 입사하면 장단점이 있는데,
단점 중에 하나가 회사에서 프록시를 사용하여 트래픽 감시를 하므로 프록시 설정을 해주어야 한다는 점 입니다.
특히, 회사에서는 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 ~/.wgetrcuse_proxy=yes
http_proxy=SERVER
https_proxy=SERVER
ca_certificate=CERT
** nodejs
npm config set https-proxy SERVER --globalnpm 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.confAcquire::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 SERVERsudo git config --system http.sslcainfo CERT
** npm
npm config set proxy SERVERnpm 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 SERVERyarn 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
덕분에 구원받았습니다.
답글삭제잘 해결되셔서 다행이네요 :)
삭제관련해서 도움을받고싶습니다... 댓글로 질문해도될까요?...
답글삭제넵넵! 질문주세요!
삭제안녕하세요... 도움되는글 감사합니다.. 혹시 질문드려도될까요
답글삭제어라..
답글삭제좋은글 감사합니다.
답글삭제그런데 이 글에서 말씀해주시는 SERVER 값이나 CERT 값을 제 컴퓨터에서 어떻게 찾아야 하나요?
구글링한 바로는 SERVER는 제어판-인터넷옵션-연결-LAN설정-자동 구성 스크립트 사용의 주소 인 것 같은데
CERT는 어떤걸 적어야하는지 못찾겠네요 ㅜㅜ 도움 받을 수 있을까요?
답이 늦어 죄송합니다. SERVER는 말씀하신 것처럼 회사 프록시의 주소입니다. CERT는 회사 프록시 서버의 인증서 파일인데요, 이것은 회사에서 지급했을겁니다. 만약에 없다면 와이어샤크로 패킷을 덤프해서 통신 중간에 회사 인증서 오는걸 파일화 해도 되고, 인터넷이 잘 되신다면 분명 회사 인증서가 이미 추가되어 있을 테니 시작-실행에서 certmgr.msc 를 실행한 후 신뢰할수있는 루트 인증기관 - 인증서 에 찾아보면 있을겁니다. 개념을 설명하자면... 회사 프록시 서버는 마치 해커처럼 님과 실제 서버간의 암호화 통신을 엿들으려고 항상 중간자 공격을 하게 되는데, 이 때 님은 공격당하는건 알지만 회사가 하는 것이니 경고를 띄우거나 막지 말고 어쩔 수 없이 허가를 해야합니다(허가 안하면 인터넷이 안됨ㅜㅠ) 그래서 지금 작업은 회사가 보내주는 공격용 인증서의 최상위 인증서를 추가 하는 것입니다. 그러면 회사는 자유롭게 님과 다른 서버간의 통신을 엿들을 수 있게 됩니다. 각 프로그램마다 이러한 처리를 해주지 않으면 프로그램은 이를 공격으로 알고 막아서 통신이 안되는 것입니다.
삭제저는 모든 케이스에서 다 안됐는데 제일 마지막 옵션(export NODE_TLS_REJECT_UNAUTHORIZED=0)으로 하니깐 되네요. 단, 제일 첫글자를 소문자로 입력하지 않으면 command not found: Export 라는 응답이 나옵니다
답글삭제그렇군요~! 감사합니다.
삭제세상에서 제일 감사합니다
답글삭제방문 감사합니다 :)
삭제정말정말 감사합니다. 외부 API요청하는데 같은소스, 같은컴퓨터로 실행하는데 사내에서만 안되서 고생했습니다.
답글삭제감사합니다. 사내에서 가이드를 제공해야 할텐데... 도입만 하고 나몰라라 ㅎㅎ
삭제정말정말 감사합니다.
답글삭제방문 감사합니다 :)
삭제선생님.. 감사합니다.. 감사합니다.. 혹시 strict ssl false를 해도 보안에는 문제가 없는거겠지요?
답글삭제사내에서 누군가 네트워크 공격을 한다는 가정하에, 중간자 공격에 취약 할 수 있습니다.
삭제