SSL 인증서 발급 및 적용 for HTTPS 통신

horiz.d·2023년 5월 19일
0

PJ: Aight

목록 보기
14/17

왜 API 웹 서버에 SSL을 적용해야 하는가?

아래의 사진에서 처럼 logIn과 같은 보안관련 요청-응답의 경우, https 프로토콜간의 통신만을 허용한다. 따라서, 이를 위해 SSL 인증서를 발급 받아 REST API 서버에도 적용시켜주고자 한다.

1

certbot 설치

sudo apt-get update
sudo apt-get install software-properties-common             (ref num 1)
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot python3-certbot-nginx




(ref num 1 수행 시 에러 참고: https://nali.tistory.com/105)

해결 요약:
리눅스 /etc/nginx/sites-enabled/default 경로의 파일에서,
#listen [::]:80 default_server;라는 ipv6 리스닝 부분을 삭제하거나 주석 처리한다.

이후, /etc/init.d/nginx restart로 서버 재시작으로 설정 변경 반영

systemctl status nginx.service 해당 명령어로 상태 확인 후 설치 재시도.

(해결 완료된 모습)


2




  1. certbot 이용해 SSL 인증서 생성
    sudo certbot certonly --standalone

    - 생성된 인증서는 /etc/letsencrypt/live/<your-domain-name>/ 디렉토리에 저장됩니다. 이 디렉토리에는 fullchain.pem (서버 인증서와 중간 인증서를 포함하는 파일)과 privkey.pem (개인 키 파일)이 포함되어 있습니다.



  • (생성 중 80포트 충돌 문제 해결)
    1. netstat -anp | grep 80을 이용해 충돌 80 포트 프로세스 확인(기존 가동 중 nginx)
    2. sudo systemctl stop nginx 을 이용한 해당 프로세스 중지
    3. 수행 후 nginx 재가동 sudo systemctl start nginx




  1. 생성된 인증서 확인

  1. 인증서를 도커 컨테이너에 마운트
    docker run -v /etc/letsencrypt/live/<your-domain-name>:/etc/nginx/certs:ro -d -p 80:80 -p 443:443 nginx


  1. nginx.conf 수정
  1. docker-compose.yml 수정
  1. 컨테이너 재시작
    sudo docker-compose up --build

감격의 SSL 적용 완료 모습

profile
가용한 시간은 한정적이고, 배울건 넘쳐난다.

0개의 댓글