つい先日やらかしてしまったようですが、やはり個人で使える SSL 証明書の定番といえば Let's Encrypt です。
ブログ立ち上げ系ポスト第2弾ということで、今回は Dynamic DNS 環境の FreeBSD + Apache で Let's Encrypt の証明書を使用できるよう設定してみます。
(前回のポスト)
環境は FreeBSD 12.1-RELEASE+Apache 2.4.43 です。
certbot というツールを使って設定しますが、控えめに言って神です。openssl コマンドでオレオレ証明書を作っていたのがバカらしくなります。
Let's Encrypt とは
ここをごらんになっているようなみなさまには説明不要だと思いますが一応。
無料のSSLサーバー証明書(以下、SSL証明書)であるLet’s Encryptは、米国の非営利団体であるISRG(Internet Security Research Group)により運営されています。全てのWebサイトを暗号化することを目指したプロジェクトであり、2019年6月現在では世界で1億枚以上の有効な証明書を発行しています。
さくらのSSL - https://ssl.sakura.ad.jp/column/letsencrypt/
改めてちょっとググってみたのですが、直感的にわかりやすい説明って思いのほかないですね・・・
だいぶ端折りますが、背景を超カンタンに説明するとこんな感じです。
- 昨今、いろいろな面でセキュリティへの要求が厳しくなってきている
- ウェブへのアクセスも同様で、一昔前は http (暗号化しない)アクセスが標準だったものが、ここ数年で https(暗号化する)アクセスが標準になっている
- サイトを https で公開することで、通信を暗号化できる
- ただ、単に通信を暗号化するだけでは安全とは言えず、そのサイトを「誰が運営しているか」ということが保証されていることが同じくらい重要
- そこで、世間一般的に信頼のある機関から「このサイトの運営者は確かにこの人だよ」の証明してもらうことで安全を担保する
で、なんとなく想像できると思いますが、今まではこの「証明してもらう」という手順が非常にめんどくさく、且つお金がかかるという状況で、個人でセットアップするハードルが高かったのですが、そこへ登場したのが Let's Encrypt です。
Let's Encrypt はこの手順を自動化してくれてしかも無料という、個人にとっては超ありがたいサービスとなっています。
Certbot のインストール
Certbot は、Let's Encrypt への登録や証明書の更新を行ってくれる統合ツールです。
いつも通り pkg を使ってインストールします。
# pkg install py37-certbot-apache
これだけです。
証明書の取得
certbot コマンドを使って証明書を取得します。
# certbot certonly --webroot -w /usr/local/www/apache24/data -d hplugr2.zapto.org
-w
は Apache の DocumentRoot を、-d
は FQDN を指定します。最初はいくつか質問事項があります(内容忘れた)が、それに答えていって最終的に以下のように表示されれば成功です。
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/usr/local/etc/letsencrypt/live/hplugr2.zapto.org/fullchain.pem
Your key file has been saved at:
/usr/local/etc/letsencrypt/live/hplugr2.zapto.org/privkey.pem
Your cert will expire on 2020-08-01. 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
作成された証明書情報が表示されていますので、あとはこれを httpd.conf の SSLCertificateFile
と SSLCertificateKeyFile
に指定すれば良いだけです。
SSLCertificateFile "/usr/local/etc/letsencrypt/live/hplugr2.zapto.org/fullchain.pem
SSLCertificateKeyFile "/usr/local/etc/letsencrypt/live/hplugr2.zapto.org/privkey.pem
1点注意点として、certbot コマンドはきちんとサイトがアクセスできる状態にしてから実行するようにしましょう。
アクセスできないと Let's Encrypt 側からアクセス確認ができず、証明書の発行に失敗します。
何度も失敗するとレート制限に引っかかってしばらく実行できないようになりますのでご注意ください。
コメント