無料SSLのlet’s Encrypt、このサイトでは導入済みですが、インストールと更新方法を書いてなかったのでメモ。
無料SSLのLet’s Encryptの簡単インストール&更新方法
無料で使えるSSL、Let’s Encrypt。このサイトでも導入済みなのは以前のエントリで紹介しました。
で、今回別のサイトにも導入したのでインストール方法をメモしておきます。
Let’s Encryptインストール
一応Shellは必須です。
certbotでコントロールするのでそちらは入れてください。certbot入っている前提で、まず証明書インストール。
rootから指定するとなんと1行で可能です。例ではexample.testというドメインでインストールする形になっていますので、実際にやるときは置き換えてください。
[root@example.test]# certbot certonly --webroot -w /www/example.test/httpdocs/ -d example.test
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for example.test
Using the webroot path /www/example.test/httpdocs for all unmatched domains.
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.test/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.test/privkey.pem
Your cert will expire on 2019-02-20. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
入力したShellはcertbot certonly –webroot -w /www/example.test/httpdocs/ -d example.testだけ。
-wでDocument Rootを、-dで対象のドメインを指定するだけです。
これで
/etc/letsencrypt/live/example.test/fullchain.pem
/etc/letsencrypt/live/example.test/privkey.pem
という証明書に必要なファイルが2つ生成されました。これをサーバの設定に入れてあげます。
nginxの場合は以下。
server { listen 443 ssl http2; server_name charingress.tokyo; #ssl_certificate /etc/nginx/conf.d/oldcert.crt; ssl_certificate /etc/letsencrypt/live/example.test/fullchain.pem; #ssl_certificate_key /etc/nginx/conf.d/oldkey.key; ssl_certificate_key /etc/letsencrypt/live/example.test/privkey.pem;
古い証明書を一応コメントアウトして、指定された/etc/letsencrypt/live以下のディレクトリを指定します。
設定を書き換えたらnginx -tで一応設定が間違ってないか確認して・・・。
[root@example.test]# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
httpサーバを再起動。
[root@example.test]# service nginx restart Redirecting to /bin/systemctl restart nginx.service
まだsystemctlがちゃんと使えなくてserviceのエイリアスでやってます・・・。
Let’s Encryptの更新方法
さて、このLet’s Encryptの有効期限は確か3ヶ月。有料の1年のものよりも当然短くなっています。3ヶ月だと忘れそう・・という人は・・
crontabにこれを仕掛けておくと幸せになれるかも。
0 0 * * * service nginx stop; /usr/bin/certbot renew; service nginx start
certbot renewで更新かどうかチェックしてくれます。が、一度httpサーバを止めないと動かないのでnginxを一旦止めて、certbotでチェックして、その後起動しなおす、という内容になっています。