サーバのSSL化をするに当たり,Let’s Encryptを利用してみました.
Let’s Encryptは,フリーで証明書を取得できる認証局です.コマンド一つで取得できます.
- https://letsencrypt.org/
ここでは,Ubuntuのnginxへの導入をしました.
certbotの導入
gitコマンドでcloneして,ディレクトリに移動します.
git clone https://github.com/certbot/certbot
cd certbot
certbot-auto コマンドで証明書の取得
今回は,nginxで80番ポートを利用しているため, --webroot
プラグインを使って発行します.
–wbrootプラグインの場合,ドキュメントルート以下にディレクトリ .well-known/acme-challenge
内にファイルを作成し,そのファイルを確認する仕組みとなります.そのため,nginxのconfに追記をします.
location /.well-known/acme-challenge/ {
default_type "text/plain";
root /var/www/example;
}
certbot-autoコマンドで証明書を取得します.以下の場合は,対話形式による確認をスキップします.
./certbot-auto certonly --webroot -w /var/www/example -d www.exmaple.com -m sample@example.com --agree-tos --force-renewal -n
nginxに証明書のパスを指定
nginxのconfに作成された証明書のパスを指定してリロードします
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
cronに証明書更新の設定
この証明書は3ヶ月で更新する必要があるため,cronで証明書を自動更新するように設定する必要があります.
0 5 1 * * /root/certbot/certbot-auto renew && /usr/sbin/nginx -s reload