본문 바로가기
DevOps/CI_CD

DevOps) CI/CD 구현하기 우분투 서버 HTTPS 설정 (4)

by 개발이 체질인 나그네 2022. 4. 13.
반응형

 

저번 시간에 실습했던 주피터의 주소는 현재 HTTP에 구축되어 있습니다.

 

저는 나중에 DB와도 연결을 할거고, 데이터를 외부로 유출되면 안되니, HTTPS로 설정을 바꾸겠습니다.

 

HTTPS와 HTTP의 차이는 안전성의 차이입니다.

 

HTTPS 란?

https://borntodevelop.tistory.com/24

 

IT 지식) HTTPS란 ? /키 페어/대칭키/비대칭키(=공개키)/CA

우리가 아는 주소의 형태는 흔히 "https://www.naver.com/" 이렇게 생겼습니다. 맨 앞에 https:// 라고 붙어있는 문자의 의미는 뭘까요? HTTPS란? Hyper Text Transfer Protocol Secure 라는 뜻으로, 마지막 Secu..

borntodevelop.tistory.com

 

HTTPS를 설정해주기 위해선 공개키와 대칭키가 필요합니다.

ㅁㅁㅁ.key, ㅇㅇㅇ.pem 형태의 파일로 존재하며,

개인적으로 사설 키를 만들 수 있지만, 원래는 해당 키를 만들어주는 CA회사가 주는 키를 적용해야 크롬, 사파리 등에서 정품인증을 받아 사용할 수 있습니다.

 

저희는 실습을 위한 것이니까, 사설 키를 받고, 크롬의 경고를 무시하고 사용할 수 있는 HTTPS 서버를 만들어 보겠습니다.

 

 

sudo netstat -nap | grep 8888

...

sudo kill -9 [사진 참고:네모 표시 숫자 입력]

먼저 현재 백그라운드에서 실행 중인 쥬피터를 멈추겠습니다.

 

 

cd /home/ubunto // 이동
mkdir ssl // ssl 파일 생성
cd ssl // ssl 파일로 이동

먼저 공개키(ㅁㅁㅁ.key)와 대칭키(ㅇㅇㅇ.pem)을 만들어줄 폴더를 생성하겠습니다.

sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout 
"Cert.key" -out "cert.pem" -batch

위 코드로 공개키와 대칭키를 만들어 줍니다.

"Cert.key"와 "cert.pem"은 이후 환경설정을 통일 시키기 위해 제가 정한 파일 명입니다. 원하는 파일명을오 해도되지만, 해당 실습을 따라 오기 위해서, 통일하는걸 추천합니다.

 

ls를 쳐서 폴더에 어떤 파일이 있는지 확인해 보면, 만든 공개키와 대칭키가 있는걸 볼 수 있습니다.

 

sudo vi /home/ubunto/.jupyter/jupyter_notebook_config.py
C = get_config()
C.NotebookApp.password = u'[아까 저정해둔 sha1:...]'
C.NotebookApp.ip = '[AWS에서 제공한 프라이빗IPv4]'
C.NotebookApp.notebook_dir = '/'
C.NotebookApp.certfile = u'/home/ubuntu/ssl/cert.pem'
C.NotebookApp.keyfile = u'/home/ubuntu/ssl/Cert.key'


// esc -> :wq! -> enter

 

기존에 만들어 놨던 config폴더를 열어

certfile과 keyfile 를 추가로 넣어줍니다.

 

sudo jupyter-notebook --allow-root

위 코드로 주피터를 서버에서 실행 시켜주면 https://가 붙는걸 볼 수 있습니다.

사진에서 :8889인 이유는 제 우분투에는 이미 8888포트에 쥬피터를 실행 시켜놔서 그렇습니다.

처음하시는분들은 8888로 나오는게 맞습니다.

 

하지만 HTTPS로 바뀐 주소로 들어가면 사이트에 연결할수 없다고 나옵니다.

 

크롬의 정품인증 정책 때문입니다.

크롬은 CA를 관리하고 인증하는 기관 역할을 합니다.

안전하다고 판단되는 대칭키는 크롬의 CA List에 저장이 됩니다.

저희가 만든 공개키와 대칭키는 사설로 만들었기 때문에 크롬의 리스트에 포함되어 있지않아, 위험하다고 알려주는 겁니다.

 

하지만 접속하고자 하는 사이트는 저희가 만든 쥬피터 웹페이지이기 때문에 위험하지 않아, 해당 경고를 무시하고 접속하겠습니다.

 

저 페이지에서 "thisisunsafe"라고 키보드로 입력하시면 2~3초후 접속하게 됩니다.

 

주의 요함 이라고 나오지만, 저희의 서버니까 괜찮습니다.

 

이렇게 HTTPS를 서버에 적용 시키는 작업을 완료했습니다.

 

여기서 추가로

만약 서버가 재부팅되거나 껏다 켜질때, 위 작업을 다시 않하기 위해, 서버의 시스템상에, 자동으로 실행 될 수 있도록 시스템 설정을 해보겠습니다.

 

 

which jupyter-notebook

먼저 Control + c 를 눌러 서버를 꺼주세요.

그리고 위 코드를 통해 쥬피터 노트북의 파일이 어디에 있는지 확인합니다.

 

sudo vi /etc/systemd/system/jupyter.service
//a 눌러서 파일 내용 수정

[Unit]
Description=Jupyter Notebook Server

[Service]
Type=simple
User=ubuntu
ExecStart=/usr/bin/sudo /usr/local/bin/jupyter-notebook --allow-root --config=/home/ubuntu/.jupyter/jupyter_notebook_config.py

[Install]
WantedBy=multi-user.target


//esc -> :wq! -> enter 저장

 

먼저 which jupyter-notebook 를 통해 쥬피터 노트북의 위치를 복사 한 후,

 

sudo vi /etc/systemd/system/jupyter.service 를 통해 시스템 환경에 접근해주세요.

 

그리고 위 코드를 시스템 환경 폴더에 추가 해주세요.

ExecStart의 뒤 주소는 쥬피터 노트북이 위치한 자리입니다.

 

// 시스템 리로딩
sudo systemctl daemon-reload

// 주피터 서버에서 허용
sudo systemctl enable jupyter

// 쥬피터 실행
sudo systemctl start jupyter

// 쥬피터 실행 상태 확인
sudo systemctl status jupyter

위 코드로 쥬피터를 실행 시켜 주고 상태 확인을 통해 실행 되고 있는 모습을 확인 할 수 있습니다.

 

 

상태 확인 코드를 보면 위 사진 처럼 해당 URL에 잘 돌아가는걸 확인 할 수 있습니다.

 

sudo systemctl restart jupyter

서버에 랙이 걸리거나 뭔가 서버에 접속이 안된다면, 위 코드로 재 시작을 할수 있습니다.

 

 

이렇게 기존의 쥬피터를 HTTPS로 바꾸고, 시스템 설정에서, 부팅시, 자동으로 쥬피터를 서버에서 실행 할 수 있도록 설정해 보았습니다.

 

 

반응형

댓글