33 Let's Encript 備忘録 (WWWサーバーのSSL対応)

阿部寛もすなる https:// 対応を、わたしもしてみんとす (https://www.itmedia.co.jp/news/articles/2508/27/news086.html)。


最近は、URL が https:// でない (http:// である) WWWサイト (つまり SSL を使わないもの) は、 WWWブラウザに「安全ではありません」といわれる。 iPhone の Safari でもすんなり接続してもらえなくなって、ストレスがたまる (時間割を iPhone で確認しているので、教室番号がすぐ見えないと困る)。

私は、大学の研究室に置いてあるマシン以外に、 さくらインターネットのマシンをWWWサーバーとして利用していて、 後者だけ https:// にしてある。 以前調べたとき、 大学に置いてあるサーバーを https:// にするのはちょっと面倒な感じがして (証明書をどうやって取るか、もし有料の場合どうやって支払うか)、 そちらは放置してあった。

今回、WWWサーバーの見直し作業をしていて、https:// 対応は、 Certbot を使って割と簡単に実現できそうに思えたので (研究室のWWWサーバーそのものは実際にインターネットに接続されて、 すでに http:// でアクセスできるようになっている、 そういう場合は簡単にできるらしい)、試しにやってみることにした。

MacPorts で Cerbot をインストール
sudo port install certbot

証明書を入手する
sudo certbot certonly \
  --webroot \
  -w WWWのrootディレクトリィ \
  -d WWWサーバーのドメイン名

簡単な質問をされる (規約に同意するかとか、メールアドレスを教えてとか)。 意外とあっさりと受け付けてもらえる。 /opt/local/etc/letsencrypt/archive/ドメイン名/cert1.pem (証明書(公開鍵)), chain1.pem (中間証明書), privkey1.pem (秘密鍵), fullchain1.pem (証明書+中間証明書) が保存される。

Apache の方では httpd.conf を少し直す必要がある。
httpd.conf の変更点 (2つ)
LoadModule ssl_module lib/apache2/modules/mod_ssl.so

Include etc/apache2/extra/httpd-ssl.conf

httpd-ssl.conf は例えば次のような感じ
/opt/local/etc/apache2/extra/httpd-ssl.conf
Listen 443
<VirtualHost *:443>
    ServerName nalab.mind.meiji.ac.jp

    DocumentRoot "WWWのrootディレクトリィ"

    SSLEngine on
    SSLCertificateFile "/opt/local/etc/letsencrypt/live/ドメイン名/fullchain.pem"
    SSLCertificateKeyFile "/opt/local/etc/letsencrypt/live/ドメイン名/privkey.pem"

    <Directory "WWWのrootディレクトリィ">
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog "/opt/local/var/log/apache2/error_log"
    CustomLog "/opt/local/var/log/apache2/access_log" common
</VirtualHost>

発行される証明書の有効期間は90日である。いつでも更新のお願いをして良いが、 期限まで30日を切らないと実際には更新されない。 ChatGPT のお勧めにしたがって、 証明書を自動的に更新するために、crontab に
MAILTO="私のメールアドレス"
0 5 * * 1 /opt/local/bin/certbot renew --quiet --deploy-hook "/opt/local/sbin/apachectl -k graceful"
というコマンドを登録した。 週に1回、証明書更新を試みる。失敗したらメールが届く。 実際に証明書が更新されたら、Apache を再起動する (つもり)。

(2025/11/26) 研究室のルーターの設定を SSL が通るように直して、試してみた。 無事 https:// での接続に成功した (あっけない)。URL書いておこう。

https://nalab.mind.meiji.ac.jp/~mk/knowhow-2025/node41.html
今後は http:// でのアクセスをやめるかどうか、 考えるのかな。それはあわてなくてよいか。

WWWブラウザに http:// がー、と言われないのは気持ちが良い。


(順番が逆になったけれど Cerbot, Let's Encrypt とは一体何? 怪しいものではないと思ってやったけれど、正体は知っておくべきですよね。)

まず “About Certbot” の What is Cerbot? から

Certbot is a free, open source software tool for automatically using Let's Encrypt certificates on manually-administrated websites to enable HTTPS.

Certbot is made by the Electronic Frontier Foundation (EFF), a 501(c)3 nonprofit based in San Francisco, CA, that defends digital privacy, free speech, and innovation.

つまり、Let's Encrypt 証明書を利用して、 ウェブサイトで HTTPS を実現するためのソフトウェア・ツールであると。 確かにインストールしたのは Cerbot だったね。


一方、 Let's Encrypt は、

Encryption for Everybody
A nonprofit providing free TLS certificates to more than 700M websites.
みんなのための証明書。 (700M とは7億?すごいですね。) 7億以上のウェブサイトに無料の TLS 証明書を無償で提供する。

Let's Encrypt は、 Web全体のHTTPS化を目指して、10年以上 (2024年が10年目) サービスを続けている、 無料かつ自動化された証明書発行基盤である。 証明書が失効した場合の対応も自動化された。 証明書の有効期間を短く6日とする(セキュリティが向上する) 仕組みも準備が進められている。 助成金 (40%), 企業スポンサー (47%), 個人寄付 (10%) によりまかなわれている、 とのこと。



桂田 祐史