본문 바로가기

# Development/DevOps

[Nginx] Ubuntu Nginx SSL 인증서 설정하기 (HTTPS 연결)

Ubuntu Nginx SSL 인증서 설정하기 (HTTPS 연결)

SSL 인증서란?

SSL에 관한 설명은 아래의 글로 대체한다.

 

[Network] HTTP, HTTPS 어떤 차이가 있지?

HTTP, HTTPS 어떤 차이가 있지? HTTP(HyperText Transfer Protocol) 하이퍼 텍스트 전송 프로토콜(HyperText Transfer Protocol)의 약자로 웹에서 정보를 주고 받을 수 있는 프로토콜이다. 주로 HTML 문서를 주고 받는데

yoon001.tistory.com

 

Ubuntu Nginx 환경에 SSL을 적용하기 위해서는 SSL인증서를 받은뒤,

Nginx 환경 설정 파일에 SSL 정보를 추가해주면 된다. 

 

환경설정 파일 위치는 Ubuntu에 기본 설정된 버전(1.18.0)으로 apt install nginx를 했을 경우에는 ,

/etc/nginx/sites-available/default.conf

 

최신 버전의 Nginx를 다운로드 했을 경우에는,

/etc/nginx/conf.d/default.conf

 

SSL 인증서 파일 설정

외부 공식 인증서 사이트에서 발급 받은 인증서를 원하는 위치에 저장하고, SSL 파일 위치를 아래와 같이 지정해주면 된다.

server {
    listen       443 ssl;
    server_name  sokuli-test.com; # 지정한 서버인증서에 포함된 도메인
	
    ssl on;
    ssl_certificate /root/ssl/nginx-ssl.crt;
    ssl_certificate_key /root/ssl/nginx-ssl.key;
 }

 

HTTP 접속시 HTTPS 리다이렉트 설정

NginX 웹서버에 http 접속 시에 https로 강제 리다이렉트를 하려고 할 경우에는 http로 접속하는 포트 (일반적으로 80) 설정에 아래와 같이 지정해주면 리다이렉트 된다.

server {
    listen       80;
    server_name  sokuli-test.com;
    return 301 https://$host$request_uri; # 리다이렉트
}

server {
    listen       443 ssl;
    server_name  sokuli-test.com; # 지정한 서버인증서에 포함된 도메인
	
    ssl on;
    ssl_certificate /root/ssl/nginx-ssl.crt;
    ssl_certificate_key /root/ssl/nginx-ssl.key;
 }

 

Nginx 재시작

설정 적용을 위해서는 Nginx를 재시작 해야한다.

$ systemctl restart nginx

 

SSL 유의사항

SSL 인증서 PEM 파일에는 발급정보(도메인,발급일자,만료일자) 가 포함되어 있다. SSL 발급은 온라인 서비스가 아닌, 일종의 키 값을 발급 받는 것이므로 인증서를 발급 받을때 마다, 매번 새로 받은 인증서 파일로 적용해야 한다.

자주 하는 실수

  • 웹서버 SSL 설정에 정확히 설정을 하였으나, 재시작등을 하지 않아 설정값이 반영되지 않음
  • SSL 설정한 웹서버 환경 설정 파일이, 실제로는 다른 곳에 있는 설정 파일로 작동함
  • 웹서버 전역으로 작동하는 SSL 설정이 존재하여, 개별 사이트 인증서 설정이 무시됨

 

<참고>

- https://www.sslcert.co.kr/faq/view/95