Let’s Encrypt でオレオレ証明書を卒業する

freebsd

つい先日やらかしてしまったようですが、やはり個人で使える SSL 証明書の定番といえば Let's Encrypt です。

ブログ立ち上げ系ポスト第2弾ということで、今回は Dynamic DNS 環境の FreeBSD + Apache で Let's Encrypt の証明書を使用できるよう設定してみます。

(前回のポスト)

FreeBSD への WordPress のセットアップ方法
久々に WordPress を使おうということで、FreeBSD 12.1-RELEASE + Apache + MySQL の環境で WordPress のセットアップを行ってみました。 初回はまず、この WordPress の設定手順についてのメモです。

環境は 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 の SSLCertificateFileSSLCertificateKeyFile に指定すれば良いだけです。

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 側からアクセス確認ができず、証明書の発行に失敗します。

何度も失敗するとレート制限に引っかかってしばらく実行できないようになりますのでご注意ください。

レート制限 - Let's Encrypt - フリーな SSL/TLS 証明書
Let’s Encrypt は、できるだけ多くの人がフェアにサービスを利用できるように、レート制限を設けています。デフォルトの設定で使用する大部分の人にとって、設けている制限は十分高いものになっていると考えています。また、証明書の更新時には、レート制限にほぼ必ず引っかからないようにレート制限を設計しています...

参考サイト様

DDNSのアドレスでSSL証明書をLet’s Encryptから取得する
自作PC、ガジェット、カメラなどを中心に、IT系の気になったことを書いていきます。
FreeBSD 12 で自宅サーバ作成 Let's Encrypt編 - Qiita
はじめにFreeBSD 12を使用した自宅サーバの構築を行った。FreeBSD 12はリリースされて間もない状態ですが、カーネルに標準でVIMAGEが取り込まれDNSの外向きと、内向きを別々のシス…

コメント

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