Nginx SSL 설정

2019.07.17 15:19OS & Server/Linux

Nginx Web Server를 SSL을 설정하여 https로 만들기 위해서는 Apache처럼 인증서파일을 하나씩 명시할 수 없기 때문에, 하나의 파일로 합쳐야 합니다.

 

저는 주로 Gabia(가비아)사의 도메인과 인증서를 애용하기 때문에, 가비아를 예시로 들겠습니다.

타사는 좀 잘 나와있는반면 가비아의 경우 홈페이지에도 언급되어 있지 않고,

블로그들도 언급되어 있지 않았고 다 비슷하긴하나 파일명이 달라 헷갈리는 경우가 많아서 ㅂㄷ..

 

 

 

가비아의 경우 SSL을 구매하고 인증을 한 뒤 메일로 발급된 파일은 2개의 압축파일을 제공합니다.

 

RootCA_ChainCA.zip

example.co.kr.zip

 

 

 

이렇게 두가지의 압축파일을 제공해줍니다.

RootCA_ChainCA.zip파일을 압축해제 할 경우, 다음과 같이 루트 인증서와 체인 인증서의 파일로 총4개의 파일을 뱉어냅니다.

 

  - Chain_RootCA_Bundle.crt

  - ChainCA1.crt

  - ChainCA2.crt

  - RootCA.crt

 

사용되는 파일은 Chain_RootCA_Bundle.crt, RootCA.crt만 있으면 되는데, 그렇다고 버리면 안됩니다.

 

 

마찬가지로 다른 압축파일인 도메인 인증서가 포함된 example.co.kr.zip 을 해제하면

  - example_co_kr_cert.pem

  - example_co_kr_csr.pem

 

을 뱉어내는데, 여기서 필요한건 example_co_kr_cert.pem 파일 입니다.

 

 

이제 이 필요한 3파일을 하나로 병합해주면되는데, 병합하기전에 반드시 지켜야할 관문이 있습니다.

 

 

순서는 반드시 지켜져야 하며, 순서는 다음과 같습니다.

  1.  example_co_kr_cert.pem [도메인 인증서]
  2.  Chain_RootCA_Bundle.crt [체인 인증서]
  3.  RootCA.crt [루트 인증서]

 

리눅스는 cat 명령을 통해 합치면 되고, Windows는 그냥 메모장으로 열어서 해도됩니다.

ubuntu@nginx$ : cat example_co_kr.cert_pem Chain_RootCA_Bundle.crt RootCA.crt > bundle.pem

 

 

리눅스 cat 명령으로 작성할 경우 반드시 확인해야 할 사항이 존재하며, 다음 명령을 입력하여 확인해보면,

cat bundle.pem

 

-----END CERTIFICATE----------BEGIN CERTIFICATE-----

 

이런식으로 CERTIFICATE가 붙어있는 구간이 있는데, 이것을 반드시 다음과 같이 개행을 줘야합니다.

파일을 Read할때 Readline으로 불러오는것 같네요.

-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----

 

 

이제 다음과 같이 nginx에서 설정을 해준 뒤 nginx를 재시작 해주면 ssl이 적용됩니다.

 

server {
	listen		443 ssl;
        server_name		example.co.kr;
        charset		utf-8;
        
        ssl_certificate		/ssl/bundle.pem
        ssl_certificate_key		/ssl/private.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
        
        location / {
        	...
        }
}

 

 

service nginx restart