김보안의 블로깅
  • 🏠 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!Twitter에서 공유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
  • android
  • AWS
  • Blockchain
  • Hardware
  • Javascript
  • mysql
  • Node.js
  • Plasma
  • review
  • Security
  • Study
  • Video
  • windows

Popular Posts

  • 회사 프록시와 인증서에 고통받는 그대를 위한 글 (Bash, Gradle, Python, wget, nodejs(npm), apt-get, cURL, git, yarn, androidStudio)
    대기업에 입사하면 장단점이 있는데, 단점 중에 하나가 회사에서 프록시를 사용하여 트래픽 감시를 하므로 프록시 설정을 해주어야 한다는 점 입니다. 특히, 회사에서는 https 트래픽도 감시를 하므로 인증서도 설정해 주어야 합니다. 그런데 문...
  • Termux 로 안드로이드에 우분투(GUI)와 VSCode설치하기
      많은 글들이 있지만 뭔가 대부분 잘 안됐다. 이번 기회에 정리한다. 0. 먼저 Termux와 Remote Desktop Manager를 설치한다. Remote Desktop Manager 대신 아래도 나쁘지 않다. 화면이 작지만 마우스 스크롤이나 ...
  • Node.js 에서 RSA 로 암복호화 하기
    Node.js 의 crypto 모듈은 기본적으로 제공되므로, npm 으로 설치할 필요가 없습니다. crypto 기본 모듈을 사용해 RSA 의 키로 암복호화 하는 방법을 알아 봅시다. 일단 그 전에 OpenSSL로 RSA Private Key...

Blog Archive

  • ►  2023 (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