常時SSL化(https)をタダにする方法【無料サーバー証明書】

常時SSL化(https)をタダにする方法【無料サーバー証明書】 サーバー

「SSL証明書の価格をもっと安くしたい・・・」
「証明書の更新に手間がかかる・・・」
「しまった!!サーバー証明書の更新を忘れてしまった!!」

このように思ったことが、ありませんか?
私は、思ったことがあります。
今も思っています。

価格以上に更新を忘れてしまう不安が、精神的にダメージがデカイです。
また、更新に伴う手間も面倒です。

なお、この記事は、サーバの管理権限を持っている方向けです。
VPSやクラウドなどの利用者と言えますね。
つまり、ある程度のサーバー知識があることが必要となります。

そして、この記事を読むメリットは以下です。

  • 常時SSL化を無料で実現できる
  • 高品質のSSLサーバー証明書を利用できる
  • 証明書の更新手間を省ける
  • 証明書の更新忘れを防ぐことができる

凄いメリットですね。
有料のSSLサーバー証明書を利用することが、バカらしくなります。

本記事の内容

  • Let’s Encryptとは?
  • Certbotのインストール
  • Apacheの設定
  • 証明書自動更新の設定

では、以下で説明をしていきます。

Let’s Encryptとは?

無料SSLサーバー証明書Let's Encrypt

Let’s Encryptとは、無料でSSLサーバー証明書を取得できるサービスのことです。
この記事では、詳細に関しては省きます。

冒頭であげたメリットを中心に説明します。

常時SSL化を無料で実現できる

Let’s Encryptを利用して、常時SSL化を無料で実現できます

無料でSSL化が実現できると、気軽に別ドメインでキャンペーンサイトを構築できます。
昔ほど効果はないと思いますが、サテライトサイトも簡単に構築できます。
すべて常時SSL化対応したサイトで。

高品質のSSLサーバー証明書を利用できる

無料だからと言って、バカにできません。
格安で販売されているSSLサーバー証明書より、圧倒的に高品質です。

なお、暗号化の種類や内容に関して説明すると、それだけでかなりのボリュームとなってしまいます。
そのため、興味のある方はご自身でググってみてください。

無料で高品質というだけでも、Let’s Encryptを利用する価値がありますよね。
さらに、メリットがあります。

証明書の更新手間を省ける

SSLサーバー証明書を自動更新できるのです。
証明書の更新作業は、結構な手間です。

契約者とサーバー管理者が別なら、さらに面倒なことになります。
CSR自体をよくわからない契約者も多くいますので。

無料、高品質、更新作業の省略、これだけでお腹一杯です。
しかし、さらに、さらに凄いメリットがあるのです。

証明書の更新忘れを防ぐことができる

上記の自動化と関連しますが、メリットとしてあげるほど重要なポイントです。

有料で購入する証明書は、基本的に自動化ができません。
契約者が販売会社とやり取りをして、証明書を手に入れることになります。

そして、それをサーバー管理者が設置して、適用することになります。
契約者と管理者間でのやり取りがスムーズであれば、まだ救いはあります。
しかし、それがなかなかスムーズにいかないのですよね・・・

そういった経緯もあるので、証明書の自動更新はできません。
しかし、Let’s Encryptを利用すると証明書の自動更新が可能です。

自動更新ができるから、証明書の期限を気にする必要がないのです。
インストールするソフトにより、有効期限が30日未満になると自動で証明書が更新されます。

よって、Let’s Encryptを利用すれば、証明書の更新忘れとはサヨナラできます。
販売会社からのメールが漏れて、更新を忘れてしまうこともありません。
証明書の更新のために社内稟議をあげて、承認を待つこともありません。

Certbotのインストール

無料SSLサーバー証明書Certbot

今回の説明では、OSはDebianを対象にしています。
バージョンは、特に関係ありません。

Ubuntuも同じようにすれば、インストール可能です。

# apt -y install certbot

# certbot certonly --webroot -w /var/www/html -d kanri-tw.info

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): info@kanri-tw.info ←---- メールアドレスを入力

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
404 Page not found - Let's Encrypt
Let's Encrypt is a free, automated, and open certificate authority brought to you by the nonprofit Internet Security Research Group (ISRG). Read all about our n...
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: N ←---- メールニュース不要 Obtaining a new certificate Performing the following challenges: http-01 challenge for kanri-tw.info Using the webroot path /var/www/html for all unmatched domains. Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/kanri-tw.info/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/kanri-tw.info/privkey.pem Your cert will expire on 2020-08-11. 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

インストールは、これだけです。
2つのコマンドを流すだけです。

以下を説明しておきます。

# certbot certonly --webroot -w /var/www/html -d kanri-tw.info

/var/www/htmlは、ドキュメントルートです。
kanri-tw.infoは、SSL化したいドメインです。

なお、Certbotのインストールには前提条件があります。
それは、http://kanri-tw.infoにアクセス可能であることです。

インストールが成功すると、以下のファイル(ディレクトリ含む)が作成されます。
kanri-tw.infoは指定したドメインです。

  • /etc/letsencrypt/live/kanri-tw.info/cert.pem
  • /etc/letsencrypt/live/kanri-tw.info/chain.pem
  • /etc/letsencrypt/live/kanri-tw.info/fullchain.pem
  • /etc/letsencrypt/live/kanri-tw.info/privkey.pem

ファイルの説明は以下。

cert.pem SSLサーバー証明書(公開鍵含む)
chain.pem 中間証明書
fullchain.pem cert.pemとchain.pemを結合したファイル
privkey.pem 秘密鍵(公開鍵に対する)

この時点では、 ファイルが作成されただけであり、まだサイトはSSL化されていません。

Apacheの設定

SSL化するApacheの設定自体は、すでに終わっている前提で説明を進めます。
別の言い方をすれば、証明書を設定するだけの状態までは対応済みという状況です。

ここでは、Certbotのインストールにより作成されたファイルの設定に絞って説明します。

aptなど使ってApacheをインストールしていれば、以下がSSLの設定ファイルのはずです。
/etc/apache2/sites-available/default-ssl.conf

Apache2.4.7以前
SSLCertificateFile /etc/letsencrypt/live/kanri-tw.info/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/kanri-tw.info/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/kanri-tw.info/chain.pem
Apache2.4.8以降
SSLCertificateFile /etc/letsencrypt/live/kanri-tw.info/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/kanri-tw.info/privkey.pem

Apacheのバージョンにより、設定の仕方が若干異なります。

証明書自動更新の設定

cronで自動設定します。

コマンドの確認

まず、以下のコマンドが動くどうか確認してください。

# certbot renew --dry-run --no-self-upgrade --post-hook "/etc/init.d/apache2 reload"

環境によっては、「/etc/init.d/apache2 reload」⇒「systemctl reload apache2」と変更してください。
要は、Apacheがコンフィグを再読み込みするコマンドを書いてください。

コマンドの意味を簡単に説明します。
詳細を知りたい場合は、こちら

「証明書の自動更新が成功したら、Apacheのreloadを実行する」
ただし、証明書の更新を本当にしないように「–dry-run」を付けています。
「–dry-run」をつければ、リハーハルができると思ってください。

まずは、コマンドの確認、主にApacheのreloadが上手くいくかどうかを知りたいのです。
これの確認は、Apacheのログを見てください。
通常は、/var/log/apache2/error.logです。

コマンドを実行して、以下のメッセージがでることを確認してください。
あとは、Apacheのreloadが確認できればOKです。

** DRY RUN: simulating 'certbot renew' close to cert expiry
**          (The test certificates below have not been saved.)

Congratulations, all renewals succeeded. The following certs have been renewed:
  /etc/letsencrypt/live/kanri-tw.info/fullchain.pem (success)
** DRY RUN: simulating 'certbot renew' close to cert expiry
**          (The test certificates above have not been saved.)

cronの設定

00 05 * * * /usr/bin/certbot renew -q --no-self-upgrade --post-hook "/etc/init.d/apache2 reload"

上記では、毎日5時に起動するように設定です。
毎日でも問題ありません。

「–dry-run」を削除して、証明書の更新を本当に行うようにします。
「-q」を追加して、実行時にメッセージが出ないようします。

注意点を書いておきます。

certbot自体は、毎日起動しても問題ありません。
ただし、certbotがLet’s Encryptで証明書の更新を行うことに制限が課されています。

「頻繁に更新を行うな!」ということです。
勘違いしそうですが、certbotの起動自体は毎日でもOKです。

certbotが起動しても証明書の有効期限が30日以上であれば、certbotはLet’s Encryptにまでは行きません。
もちろん、証明書の更新も行いません。

まとめ

Let’s Encryptを利用すれば、SSLサーバー証明書が無料で取得できます。
そして、以下のことが実現できます。

  • 常時SSL化を無料で実現できる
  • 高品質のSSLサーバー証明書を利用できる
  • 証明書の更新手間を省ける
  • 証明書の更新忘れを防ぐことができる

本文では、 Let’s Encryptを利用するための方法を説明しました。

  • Certbotのインストール
  • Apacheの設定
  • 証明書自動更新の設定

この通りに行えば、メリットだらけです。
ただし、そのためには、サーバー権限とある程度のサーバー管理スキルが必要です。

ここまで書いてきた私ですが、実はこのブログはLet’s Encryptを使っていません。
使っているのは、格安のSSLサーバー証明書です。
年間で1,100円でした。

でも、次の更新ではLet’s Encryptに乗り換えます。
というか、2020年12月までには乗り換えます。

「すぐに乗り換えればいいのに」という声が聞こえてきそうです。
実際、乗り換えるのは簡単ですが、そうはしたくないのです。

格安とは言え、折角お金を払ったのでその分は利用してやりたい、というセコイ気持ちです。

タイトルとURLをコピーしました