結構苦労をしたので、メモがわりにやり方をここに載せておく (23/4/2018一部更新)。Apacheは、たんにbrew install httpdでインストールしたもの (Apache/2.4.33)。
Let’s Encryptを使うため、certbotをインストールする。
brew install certbot sudo certbot certonly --webroot -d hoge.hoge.ac.jp -w /usr/local/var/www
メイルアドレス等を訊かれるので、指示に従ってインスト-ル作業を進める (hoge.hoge.ac.jpや/usr/local/var/wwwは環境に応じて書く)。
/usr/local/etc/httpd/httpd.confのApache設定ファイルを以下のように書き換える。
#ServerName localhost:80 LoadModule ssl_module libexec/apache2/mod_ssl.so LoadModule socache_shmcb_module libexec/apache2/mod_socache_shmcb.so Include /private/etc/apache2/extra/httpd-ssl.conf <VirtualHost *:80> ServerAdmin root@hoge.hoge.ac.jp DocumentRoot /usr/local/var/www ServerName hoge.hoge.ac.jp </VirtualHost>
LoadModuleやIncludeのところは#をはずすだけ。次に、/usr/local/etc/httpd/extra/httpd-ssl.confを以下のように書き換える。ポート番号が8443になっているものは全て443に訂正する。
DocumentRoot "/usr/local/var/www" ServerName hoge.hoge.ac.jp:443 ServerAdmin root@hoge.hoge.ac.jp #SSLCertificateFile "/usr/local/etc/httpd/server.crt" SSLCertificateFile "/etc/letsencrypt/live/hoge.hoge.ac.jp/cert.pem" #SSLCertificateKeyFile "/usr/local/etc/httpd/server.key" SSLCertificateKeyFile "/etc/letsencrypt/live/hoge.hoge.ac.jp/privkey.pem" SSLCertificateChainFile "/etc/letsencrypt/live/hoge.hoge.ac.jp/chain.pem"
ここまで書いたらsudo brew services restart httpdでApacheを再起動する。
sudo certbot renew --dry-run
Let’s Encryptは3ヶ月ごとに更新 (renew) しなければならない。更新できるかどうか、テスト (–dry-run) しておく。
sudo crontab -e 5 6 * * 0 sudo /usr/local/bin/certbot renew >> /var/log/certbot.log 2>&1 5 6 * * 0 sudo brew services restart httpd
cronにrenewを定期的に実行するように書いておく (訂正。httpdを再起動する必要がある 2024年4月21日追記)。この例では毎週日曜日の6時5分に実行する。
ちゃんと動作しているかどうか確認しておく。以下の例ではまだ更新するタイミングではないので、renewalは行われていない。
cat /var/log/certbot.log Saving debug log to /var/log/letsencrypt/letsencrypt.log ------------------------------------------------------------------------------- Processing /etc/letsencrypt/renewal/hoge.hoge.ac.jp.conf ------------------------------------------------------------------------------- Cert not yet due for renewal ------------------------------------------------------------------------------- The following certs are not due for renewal yet: /etc/letsencrypt/live/hoge.hoge.ac.jp/fullchain.pem expires on 2018-07-17 (skipped) No renewals were attempted. -------------------------------------------------------------------------------
httpでアクセスされたら自動的にhttpsにリダイレクトされるように、.htaccessファイルに以下の記述を追加。/usr/local/var/www直下のものと、/usr/local/var/www/wp (WordPressインストールディレクトリ) 以下のファイル両方に書いておく。なお、WordPressインストールディレクトリ以下の.htaccessファイルにはいろいろ既に書かれてあるので、一番上に挿入しておく。
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
以上が終わったら、WordPressの設定→一般で、httpになっているものをhttpsに変更する。なお、マルチサイト機能を利用している場合は、データべース上でwp_optionsテーブルのsiteurlを書き換える。MacならSequel Proなどを使えば簡単。