もちろんこのブログドメインとは別の話だけど、あるドメインのSSL証明書を「Let’s Encrypt」から「Cloudflare」に切り替えた。
※このブログのドメインはサーバー契約するとおまけでくれる無料サブドメインで、サーバー管理会社のサービスでスイッチひとつでLet’s Encrypt証明書が自動で更新され続ける
導入
今まではよくあるように「Let’s Encrypt」で無料証明書を取得するバッチ処理を行って定期的に更新してきたのだが、とある事情でそれができなくなった。
調べてみるとCloudflareでも無料証明書を発行できるらしく、そのオリジン(サーバー)証明書はなんと15年間も有効なのだと言う。グーグルが、入力欄すらないサイトでも実質TLS1.2を求めてくるが(内容関係なく警告まで出す)、さすがに有料というのも馬鹿らしいので大変ありがたい。
この機会にそれを試してみた。日本語での解説があまり見当たらなかったため、実行した内容をメモ代わりに記しておく。
大まかな手順
- Cloudflareのオリジン証明書(SSL/TLS-オリジン サーバー)ページで証明書を発行する
- 「Cloudflare でプライベート キーと CSR を生成する」
- 「有効期限:15年」
- 「オリジン証明書(仮にserver.pemとする1️⃣)」と「プライベートキー(仮にprivkey.pemとする2️⃣)」が発行(表示)されるので必ずメモる
※後で確認できないので、サボらず両方必ずメモ(コピー/ペースト)ること
※当たり前だがファイル名はhttpd.conf記述と同じであれば何でも良い
- Cloudflareのルート証明書(中間証明書)の取得
- https://developers.cloudflare.com/ssl/origin-configuration/origin-ca#cloudflare-origin-ca-root-certificate
- で「Cloudflare Origin RSA PEM」をクリックして「origin_ca_rsa_root.pem」をダウンロードしておく3️⃣
※当たり前だがファイル名はhttpd.conf記述と同じであれば何でも良い
- 1️⃣~3️⃣のファイルはすべて当該サーバーにアップロードしておく
- あるいはviなどでコピペ(中身は全部テキスト)。サーバートラブルに備えてローカルにもバックアップを取っておく
- あとはhttpd.confなどに下記指定
- SSLCertificateFile:/server.pem 1️⃣
- SSLCertificateChainFile:/origin_ca_rsa_root.pem 3️⃣
- SSLCertificateKeyFile:/privkey.pem 2️⃣
※このあたりはSSL設定する時のごく一般的な話なので、どのあたりにどのように記述するかは一般サイトで調べてください。ここでは間違わないように組み合わせだけ明記しておきます。書き換えた後はコンフィグテストも当然やっておく - httpd再起動
- これでCloudflareサイトのエッジ証明書欄で「(Cloudflare により管理)」という表示が付くはず。これが付けば証明書の書き換え成功ということになります。ただし忘れずに7の確認をすること
※ブラウザ側の証明書表示ではない - (以前の証明書の期限が30日を切ると)自動的にCloudflare証明書に切り替わる
※ブラウザでハードリロードをしてみて当該ドメインの証明書を確認する。当たり前だがブラウザから見たときには普通に3ヶ月証明書にしか見えない
※以降3ヶ月ごとの証明書が、オリジン証明書の有効期限(つまりは15年間)の間発行されるはず
Cloudflareでの設定
- SSL/TLS概要ページで、「カスタム SSL/TLS」で「フル(厳密)」にする
コメント