안수찬의 개발이야기

SSL Certificate on Ghost Blog Platform with Nginx

Introduction

안수찬 @dobestan

안수찬 @dobestan

소프트웨어 생태계에 기여할 수 있는 실용주의 프로그래머가 되고자 합니다. 나는 안수찬이다. 그러므로 나는 할 수 있다.


SSL Certificate on Ghost Blog Platform with Nginx

Posted by 안수찬 @dobestan on .
Featured

SSL Certificate on Ghost Blog Platform with Nginx

Posted by 안수찬 @dobestan on .

이 블로그는 Amazon Web Service EC2 를 사용하고 있다. Ghost의 기본적인 설정인 2368번 포트로 프록시 서버가 돌아가고 있고 nginx 를 웹 서버로 80번 포트에서 사용하고 있었다. 딱히 보안상 아쉬운 점이나 더 추가적으로 설정해야할 필요성은 못느꼈지만 한번 SSL을 이용하여 443포트로 https로 접속해보고 싶어 설정을 완료했다. 사실대로 얘기하자면 주소창에 영롱하게 빛나는 https 초록색 문구를 가지고 싶었던 것 같다. 그 과정을 공유한다.

SSL 인증서 구매하기

자체적으로 암호키를 만들어서 사용할수도 있었지만 주소창이 영롱한 초록색 https으로 변경되는 것을 목표로 하였기에 Root CA ( 최상위 인증기관 )에서 발행한 인증서를 구매하기로 하였다. 여러 업체를 비교해보다가 Comodo 인증서를 굉장히 저렴한 가격에 구매할 수 있는 https://www.gogetssl.com/ 에서 3년 / $12.35에 구매하였다.

구매 이후 설정이나 Domain Varification ( 내가 실제로 그 도메인의 소유자인지 ) 등의 과정은 사이트 내부에서 굉장히 친절하게 설명해주니 여기서는 생략하도록 한다. 최종적으로는 3개의 SSL Public Key (*.crt) 들과 하나의 SSL Private Key (*.key)를 가지게 된다.

-rw-rw-r-- 1 ubuntu ubuntu 1521 May 30  2000 AddTrustExternalCARoot.crt
-rw-rw-r-- 1 ubuntu ubuntu 1805 Jun 23 15:00 blog_ansuchan_com.crt
-rw-rw-r-- 1 ubuntu ubuntu 1757 Feb 15  2012 PositiveSSLCA2.crt
-rw-r--r-- 1 root root 1704 Jun 24 10:29 /etc/ssl/private/blog_ansuchan_com.key

Nginx SSL 설정하기

왜 3개의 공개키를 하나의 공개키로 합치는 방법을 사용하는지는 명확하게 이해할 수 없지만 Certificate Installation: NGINX > Combine (Concatenate) multiple certificates into one file의 방법을 그대로 따라 Public Key들을 하나의 ssl-bundle.crt로 합쳤다. 혹시 다른 웹서버를 사용하고 있더라도 비슷한 방법으로 설정할 수 있다. ( Comodo Certification Authority > Certificates > SSL > Certificate Installation )

cat www_yourdomain_com.crt ComodoHigh-AssuranceSecureServerCA.crt AddTrustExternalCARoot.crt  
> ssl-bundle.crt

node.js로 2368번 포트로 Ghost 웨서버를 프록시로 띄우고 443번(https)으로 웹 서버로 사용하기 위해서 Nginx SSL 설정 /etc/nginx/sites-available/ghost.conf과 Ghost 설정 config.js 를 변경해주자. 변경이 완료되면 nginx와 ghost 서버를 재시작하자.

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

server {  
        listen 80;
        listen 443 ssl;

        server_name blog.ansuchan.com;

        ssl_certificate         /etc/ssl/certs/ssl_bundle.crt;
        ssl_certificate_key     /etc/ssl/private/blog_ansuchan_com.key;

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass         http://127.0.0.1:2368;
    }
}
// /var/www/ghost/config.js
...
production: {  
        url: 'https://blog.ansuchan.com',
...

영롱하게 빛나는 HTTPS

드디어 영롱하게 빛나는 SSL 보안서버인증을 통한 HTTPS를 가졌다. 온 세상을 가진 기분이다.

안수찬 @dobestan

안수찬 @dobestan

https://dobest.io/

소프트웨어 생태계에 기여할 수 있는 실용주의 프로그래머가 되고자 합니다. 나는 안수찬이다. 그러므로 나는 할 수 있다.

View Comments...