本日も乙スマートフォン用の表示で見る本日も乙ただの自己満足な備忘録。Encrypt)は無料でSSL/TLS証明書を発行できる認証局(CA)です。有効期限が90日(約3ヶ月)と短いですが、コマンドによる自動化が可能で定期的に実行することで常に証明書を更新し続けることができます。証明書を取得するにあたり、ドメインを自分で管理しているかの認証方式が以下の三つがサポートされています。Encryptの認証局からワンタイムトークンを発行してもらい、Webサーバに認証用ファイルを設置する。認証局からHTTP(80番ポート)でアクセスしてもらい、ワンタイムトークンと認証用ファイルとの妥当性を検証する。TLS-SNI-01HTTP-01と同じ方法だが、HTTPS(443ポート)を使用する。Encryptの認証局から発行してもらったワンタイムトークンを対象ドメインのTXTレコードに登録することで検証する。アクセスが制限されているサーバに対して証明書を取得する場合はDNS-01方式を採用したいと考えるはずです。Certbotコマンドで今までできなかったため、サードパーティ製のスクリプトであるdehydrated(旧letsencrypt.sh)を使っていましたが、v0.9.0からCertbotでもサポートされるようになりました。https://github.com/certbot/certbot/milestone/22そこで、CertbotでDNS-01方式によるSSL/TLS証明書を取得する方法をご紹介します。jicoman.infoCertbotのインストールepelリポジトリを持ってきてYumでインストールします。初回のみ手動で行います。コマンドのオプションなどはドキュメントをご参照ください。(今回はacme-challenge.jicoman.info)のTXTレコードにワンタイムトークンを登録してください。登録後、エンターを押すと再開します。レコード登録後すぐだと反映されていないので少し待ちましょう。成功すると以下のように表示されます。取得した証明書を見てみます。証明書が更新されて取得する度に、ファイル名の数字がインクリメントされたファイルが生成されます。nginxなど)の設定を書き換えなければならず大変面倒です。そこで次の証明書を見てみましょう。READMEシンボリックリンクが張られていることがわかります。新たな証明書が取得される度にシンボリックリンクの向き先を更新してくれるため、ApacheやNginxの設定ではこちらのパスを指定することで、更新されたとしても設定を変更しなくても済みます。次に証明書の妥当性を確認します。OKOKと出ているので妥当性は問題なさそうです。二回目以降は自動的に証明書を更新することができます。フックスクリプトdehydrated(旧letsencrypt.sh)の場合と同様に認証チャレンジするフックスクリプトを用意する必要があります。DNSサービスはRoute53を利用しているため、Route53と連携しているスクリプト(Python製)を使用することにします。/usr/local/bin/Route53へレコード登録・削除するAWSアクセス権限を設定EC2インスタンスであればIAMロール、そうでなければAWSアクセスキーを発行します。ポリシーをアタッチしてください。CLIのインストールと設定を行います。/usr/local/bin/route53.py先ほど手動で取得した場合といくつかオプションが異なっています。指定しているため、既存の証明書の期限関係なく証明書を更新します。実行すると以下のような実行結果になります。""]}]}生成されたファイル群を見ても更新されていることがわかります。README定期的に実行する場合Cronなどで定期的に実行し、期限が近づいたら更新するようにします。オプションを指定することで、現証明書の有効期限が近づくまでは更新しません。取得する方法を紹介しました。Certbotはオプションがかなり多いですが、ドキュメントを見ながらやれば想像以上に簡単にできます。無料でSSL/TLS証明書が使えるので個人サービスを持っている人はぜひ導入を検討した方がよいかと思います。更新がきたらSlack通知したり、WindowsのIIS対応などは別記事で書こうと思います。月別アーカイブはてなブログをはじめよう!ohsawa0515さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。