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 総合ポータル