nginx で SSL 対応サイトを作る
Let’s EncryptでSSL証明書取得
SSL証明書は有料で数千のものから数十万のものまであるみたいです。「Let's Encrypt」ですと無料で取得できる そうなのでこれを使っていきます。
- certbotをインストールする
$ sudo apt-get install certbot
- SSL証明書を発行
オプションの意味について
sudo certbot certonly --webroot -w demo/public_html/www.mackxxx.site/public/ -d www.mackxxx.site ... IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/www.mackxxx.site/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/www.mackxxx.site/privkey.pem ...
/etc/letsencrypt/live/www.mackxxx.site/
に以下のファイルが作成されたのを確認します。
$ sudo ls /etc/letsencrypt/live/www.mackxxx.site cert.pem chain.pem fullchain.pem privkey.pem README
2つ目のserver{ 以下を追加します
$ sudo cat www.mackxxx.site server { listen 80; server_name www.mackxxx.site; access_log /home/mackxxx/demo/public_html/www.mackxxx.site/log/access.log; error_log /home/mackxxx/demo/public_html/www.mackxxx.site/log/error.log; location / { root /home/mackxxx/demo/public_html/www.mackxxx.site/public/; index index.html index.php; } } server { listen 443 ssl; server_name www.mackxxx.site; ssl on; ssl_certificate /etc/letsencrypt/live/www.mackxxx.site/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.mackxxx.site/privkey.pem; location / { root /home/mackxxx/demo/public_html/www.mackxxx.site/public/; index ssl-index.html index.php; } }
今回はhttpとhttpsで別のページを表示するので
/home/mackxxx/demo/public_html/www.mackxxx.site/public/;
以下に表示させるssl-index.html
を追加します。最後に再起動して正しくページが表示するか確認します
$ sudo /etc/init.d/nginx stop $ sudo /etc/init.d/nginx start