背景
- Let's Encryptで発行したSSL証明書が3月31日に切れる📴
- どうせ更新するなら、自動化したいなぁ🤔
- お、丁度いいタイミングでHerokuさんのプレスリリースが...
Automated Certificate Management
https://devcenter.heroku.com/articles/automated-certificate-management
With Automated Certificate Management (ACM), Heroku automatically manages TLS certificates for all apps that have Hobby and Professional dynos on the Common Runtime. Certificates handled by ACM automatically renew before they expire, and new certificates are created automatically whenever you add or remove a custom domain. All applications with paid dynos include ACM for free.
Automated Certificate Management uses Let’s Encrypt, the free, automated, and open certificate authority for managing your application’s TLS certificates. Let’s Encrypt is run for the public benefit by the Internet Research Security Group (ISRG).
メッチャ便利そうなので使ってみよう...!!
今回、自動更新したドメイン
前提条件
- Heroku上のアプリであること
- Hobbyプラン以上にしていること
-
DNSを
herokudns
に向けていること
なお、自分の場合はいずれも下記で設定済みなので、あとはACMを有効化してみるだけでした
PRで解説する、Jekyll + Heroku で HTTPS 対応
http://qiita.com/yasulab/items/d900bb47bf73beada855
やってみた
現在の状態は heroku certs:auto
で確認できます。
╭─○ yasulab ‹2.4.0› ~/coderdojo.jp
╰─○ heroku certs:auto
=== Automatic Certificate Management is disabled on coderdojo-japan
2017年3月20日以前に作成したアプリケーションで、かつ、ACMをまだ設定していないければ、ACMは disabled になっているはずです🤔
ACM is enabled by default for all applications created after March 21, 2017 that are running on Hobby or Professional dynos.
https://devcenter.heroku.com/articles/automated-certificate-management#enable-automated-certificate-management
Herokuのダッシュボードから Settings -> Configure SSL と辿ると、ACMを有効化することができます。
問題なければ上記のように設定して Continue をクリック。ダッシュボード上では、自動更新の設定前はSSL証明書の期限が表示され、設定後は非表示になります。
ACM設定前:
(📝 今回はダッシュボードから設定していますが、heroku certs:auto:enable
でも設定できるようです)
設定後、再度certs:auto
を実行すると Waiting
になっていることが確認できます。
╭─○ yasulab ‹2.4.0› ~/coderdojo.jp
╰─○ heroku certs:auto
=== Automatic Certificate Management is __enabled__ on coderdojo-japan
Domain Status
──────────────── ───────
www.coderdojo.jp Waiting
coderdojo.jp Waiting
2~3分 待つと、In Progress
に。
╭─○ yasulab ‹2.4.0› ~/coderdojo.jp
╰─○ heroku certs:auto
=== Automatic Certificate Management is enabled on coderdojo-japan
Domain Status
──────────────── ───────────
www.coderdojo.jp In Progress
coderdojo.jp In Progress
45~60分 ほどすると、DNS Verified
になりました。
Domain Status
──────────────── ────────────
www.coderdojo.jp DNS Verified
coderdojo.jp DNS Verified
DNS Verified
は「証明書が更新された」という意味ではないので注意 (成功は OK
)。 したがって、この時点ではまだ証明書は更新できていません:
╭─○ yasulab ‹2.4.0› ~/coderdojo.jp
╰─○ heroku certs:info
Fetching SSL certificate triceratops-84351 info for ⬢ coderdojo-japan... done
Certificate details:
Common Name(s): coderdojo.jp
Expires At: 2017-03-31 05:43 UTC
Issuer: /C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
Starts At: 2016-12-31 05:43 UTC
Subject: /CN=coderdojo.jp
SSL certificate is verified by a root authority.
If your status says “DNS Verified”, the process is not finished yet. It means we have verified your domain status and are still in the process of submitting it to Let’s Encrypt. The process will be complete when it says “OK”.
https://devcenter.heroku.com/articles/automated-certificate-management#view-your-certificate-status
参考: 各ステーテスの意味
更新結果
DNS Verified
からさらに30分ほど経つと、OK
になりました。OKまでにかかる予想時間はドキュメントには書いていなかったので、もっと早かったり遅かったりするかもしれません🤔
╭─○ yasulab ‹2.4.0› ~/coderdojo.jp
╰─○ heroku certs:auto
=== Automatic Certificate Management is enabled on coderdojo-japan
Certificate details:
Common Name(s): coderdojo.jp
www.coderdojo.jp
Expires At: 2017-06-28 00:48 UTC
Issuer: /C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
Starts At: 2017-03-30 00:48 UTC
Subject: /CN=coderdojo.jp
SSL certificate is verified by a root authority.
Domain Status
──────────────── ──────
www.coderdojo.jp OK
coderdojo.jp OK
ACMで自動更新されるようになると、certs:info
を使わなくてもSSLの期限が表示されるようになりました。また、期限についても、 Let's Encryptの上限である3ヶ月間延長されている ことが確認できます
cf. certs:info
の実行結果:
╭─○ yasulab ‹2.4.0› ~/coderdojo.jp
╰─○ heroku certs:info
Fetching SSL certificate triceratops-84351 info for ⬢ coderdojo-japan... done
Certificate details:
Common Name(s): coderdojo.jp
www.coderdojo.jp
Expires At: 2017-06-28 00:48 UTC
Issuer: /C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
Starts At: 2017-03-30 00:48 UTC
Subject: /CN=coderdojo.jp
SSL certificate is verified by a root authority.
最後に、SSL証明書が自動更新された後、ページが正常に表示されることを確認します
以上です ;)
SSLの自動更新がメッチャ簡単! Heroku すごいですね! 😆
宣伝
弊社 (YassLab) ではCoderDojo JapanやRailsガイドを始めとして、様々なOSSプロジェクトに貢献しています ;)
2017年度からRailsチュートリアルとRailsガイドの電子書籍版を出版しました! また、Railsチュートリアルの解説セミナーを収録した動画 (計34時間) も公開していますので、Railsを学びたい方はこちらもぜひ😸📹✨