Blowin' in the Wind

~ memorandum ~

Debian8(さくらVPS)サーバのnginxにLet's Encryptを導入しSSL対応サイトを構築する

目的

Debian8(さくらVPS)サーバのnginxをSSL対応する。

SSL対応に際しては、誰でも無料で使えるSSL/TLS証明書発行サービスである「Let's Encrypt」を使用する。

backportsを設定する 

Debian 8 Jessieを使ってるので、sources.listのリポジトリにbackportsを追加。

現状設定を保存

$ cp /etc/apt/sources.list /etc/apt/sources.list.org

設定の追加

$ sudo vim /etc/apt/sources.list

最後の行に以下追加。

deb http://ftp.debian.org/debian jessie-backports main

保存したらupdateを実行。
$ sudo apt-get update

certbotをインストール

$ sudo apt-get install certbot -t jessie-backports

問題ないことを確認するため以下実施。

$ sudo certbot --help

ヘルプ内容が表示されOK

証明書を取得

nginxを停止し、certbot コマンド実行

$ sudo service nginx stop
$ certbot certonly --standalone -d ドメイン

以下、出力されOK。

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at ~~~

証明書の場所は以下の通り。

サーバ証明書(公開鍵)
/etc/letsencrypt/live/ドメイン名/cert.pem
中間証明書
/etc/letsencrypt/live/ドメイン名/chain.pem
サーバ証明書と中間証明書が結合されたファイル
/etc/letsencrypt/live/ドメイン名/fullchain.pem
秘密鍵
/etc/letsencrypt/live/ドメイン名/privkey.pem

ドメイン名をsub1.domain-a.com とした。

nginxの設定実施

すでに作成済みの以下のファイルに追加。

/etc/nginx/conf.d/nihongelist.conf
以下、追記。(ドメイン名とrootは各個別名)
server {
listen 443 default ssl;
ssl on;
ssl_certificate /etc/letsencrypt/live/sub1.domain-a.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/sub1.domain-a.com//privkey.pem;
root /home/user1/sites/sub1/domain-a.com/public/;
       index index.html index.php;

}

確認

$ sudo service nginx stop
$ sudo service nginx start

https://sub1.domain-a.com/ にアクセスし、表示されOK。

SSL/TLS サーバ証明書の更新

Let's EncryptのSSL証明書の有効期限は90日と短くなっています。また、更新が可能になるのは期限切れの30日前からとなっています。

尚、cron ジョブの自動追加については、以下とのこと。

引用元:Certbot クライアントのインストール - Let's Encrypt 総合ポータル

Debian パッケージ版の Certbot クライアントは、自動的に cron ジョブを /etc/cron.d/certbot に追加します。この cron ジョブは、毎日2回 certbot renew を実行して、有効期限が近い SSL/TLS サーバ証明書を自動的に更新します。

※有効期限が近い証明書が存在しない場合には、証明書の更新は行われません。

参考サイト

Let's Encrypt - Free SSL/TLS Certificates

プログラミングビギナーNekoteniがあなたに贈る!NginxでSSLの巻 - ねこテニ

オレオレ証明書をopensslで作る(詳細版) - ろば電子が詰まっている

Let’s EncryptのSSL証明書で、安全なウェブサイトを公開 - さくらのナレッジ

光の速さのWEBサーバー(nginx)をlet's encryptでSSL化及びHTTP/2化。ついでにセキュリティ評価をA+にする。 - Qiita

Nginxで起動中のサーバーにLet's Encryptを導入してSSL証明書を発行する - 望月いちろうのREADME.md

ユーザーガイド - Let's Encrypt 総合ポータル

Let's Encrypt の使い方 - Let's Encrypt 総合ポータル

Let’s EncryptによるSSLサーバー証明書の自動更新設定 – 稲葉サーバーデザイン