「Let’s Encrypt」を使ってWebサイトをhttps化

今回は、無料の「Let’s Encrypt」を使って、Webサイトをhttps化したのでその方法を紹介します。設定手順は以下です。

  1. Let’s Encryptで証明書を取得
  2. 鍵ファイルの設定
  3. 証明書更新の自動化

ではさっそく設定しましょう。

1.Let’s Encryptで証明書を取得

まずは、Let’s Encryptを利用するためのCertbotクライアントソフトをインストールします。Certbot クライアントを使うことで、HTTPS / TLS / SSL の証明書を取得したり、インストールしたりすることができるようになります。

$sudo apt install certbot

Certbot クライアントのコマンド「cerbot」を使って証明書を取得します。
サブコマンド「certonly」を使って、SL/TLS サーバ証明書の取得を行います。

$sudo certbot certonly
↓以下が実行ログです。
Saving debug log to /var/log/letsencrypt/letsencrypt.log
How would you like to authenticate with the ACME CA?

1: Spin up a temporary webserver (standalone)
2: Place files in webroot directory (webroot)

Select the appropriate number [1-2] then [enter] (press 'c' to cancel):2
Plugins selected: Authenticator webroot, Installer None
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):メールアドレスを入力

Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory

(A)gree/(C)ancel:A

Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
(Y)es/(N)o: Y
Please enter in your domain name(s) (comma and/or space separated) (Enter 'c'
to cancel):site-zero.mydns.jp
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for site-zero.mydns.jp
Input the webroot for site-zero.mydns.jp: (Enter 'c' to cancel): /var/www/html/
Waiting for verification…
Cleaning up challenges
IMPORTANT NOTES:
Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/サイトのドメイン名/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/サイトのドメイン名/privkey.pem
Your cert will expire on 2020-09-26. 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"
Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
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

以上で、「/etc/letsencrypt/live/ドメイン名」に鍵ファイルが生成されます。

2.鍵ファイルの設定

まずは、sslを有効にします。

$sudo a2enmod ssl
$sudo a2ensite default-ssl

「/etc/apache2/site-available/defaults-ssl.conf」に取得した鍵ファイルを設定します。

・・・
SSLCertificateFile?-/etc/letsencrypt/live/site-zero.mydns.jp/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/site-zero.mydns.jp/privkey.pem
・・・
SSLCertificateChainFile /etc/letsencrypt/live/site-zero.mydns.jp/chain.pem

設定を反映するために、apache2を再起動します。

$sudo service apache2 restart

https://サイトのドメイン名」にアクセスすると鍵が表示されると正しく設定が反映できています。エラーが発生する場合は、設定ファイルの記載に、誤りがないか確認してください。

3.証明書更新の自動化

証明書の有効期限が90日なので、定期的に自動更新するようにします。

毎月実行されるスクリプトを置くディレクトリに証明書更新スクリプトを置く。

/etc/cron.monthly/letsencrypt

!/bin/sh
certbot renew --deploy-hook "service apache2 restart"

・cerbot renewコマンドを実行すると、有効期限の残りが30日未満の証明書が更新されます。
・–deploy-hookを使って、個々の証明書更新の処理を終わった後で証明書の更新された場合だけapacheを再起動させる。

※ –pre-hook, –post-hook, –deploy-hook について

ディレクトリ 処理のトリガー
pre certbotが全部の証明書更新の処理を始める前に証明書の更新の有無に関わらず必ず実行される
post certbotが全部の証明書更新の処理を終わった後で証明書の更新の有無に関わらず必ず実行される
deploy certbotが個々の証明書更新の処理を終わった後で証明書の更新された場合にだけ実行される

これでやっとアドレスバーに「安全ではありません」って出てこなくなりました。Webサーバーを公開する際には、https化は重要です。「Let’s Encrypt」であれば無料で証明書が取得できるので、ぜひ挑戦してみてください。意外に簡単に取得することができます。

【追記】独自ドメインを取得した際に、複数のドメインのSSL化を1つの証明書で行う必要があったので、その方法を記載しておきます。(自分が忘れないように)

-dオプションで、必要なドメイン分を指定
-wオプションで、各ドメインのドキュメントルートを指定

以下コマンドで、「site-zero.mydns.jp」と「raspi-katsuyou.com」の2つのドメインに対応した証明書が取得できます。

$ certbot certonly --webroot -w /var/www/html -d site-zero.mydns.jp -d raspi-katsuyou.com

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA