ホームページ制作/SEO対策なら株式会社サイバーブレーンへ

 03-5961-5681 平日10:00~19:00

 2021-01-19

【概要のみ】Let's EncryptのワイルドカードSSL証明書を自動更新

AWS(route53・IAM)サービスを使用して、Let's EncryptのワイルドカードSSL証明書を自動更新設定する検証をしたので、その概要を記事としてまとめました。

Let's EncryptのワイルドカードSSL証明書の自動更新の流れや設定手順は、通常のcertbotを使用したやり方とは大分異なるので、概要をざっくり把握したい方などに読んで頂ければ幸いです。

詳細な手順や環境などは記載しておりませんが、
参考にさせて頂いたサイトはページ下部に参考リンクとしてまとめてありますので、具体的な手順が知りたい方などはそちらのサイトをご参照頂ければと思います。

■使いどころ
弊社が提供しているカメレオン(https://www.u-cars.site/)のようなHP作成サービスでは、各ユーザーに対してサブドメインを提供してHP公開環境を提供しておりますので、
SSL証明書の更新作業も、ユーザーの増減に合わせて全てのサブドメインに対して行わないといけません。

このような不特定多数のサブドメインを持つようなwebサービスの、SSL証明書更新を自動化したい時に必要な作業になります。

個別のドメインに対してcertbotを使用してLet's Encryptの証明書の自動更新を行う場合は簡単に自動化できてしまうのですが、ワイルドカード証明書の場合は、DNSレコードの設定作業が必要なので、DNSと連携できるような仕組みが必要になります。

■ざっくりまとめ
awsの設定に関する調べ物や検証に時間がかかりましたが、ちゃんと動作は確認できました。ただ、いくつか懸念点がありました。

・せっかくLet's Encryptで無料でSSL証明証明書の取得が行えるのに、awsのサービスを使用するので一応そちらのコストを考えないといけない(かなり少額のようですが)

・別に問題ないとは思いますが、こちらに記載している内容だと、DNSとしてaws route53を使用する必要があります。route53にIAMで作ったアカウントでアクセスします。先にも書きましたがawsのサービスの使用や設定に慣れていないと、けっこう時間がかかります。

・管理しないといけないサービス、ソフトがやたら多くなります。awsの各種サービスもですが、普通のcertbot以外にも、awsのIAMアカウントにサーバからアクセスするようなソフトもインストールします。

Let's Encrypt自体の仕様が変わることもあるので、(もちろん各サービスがすぐに対応はされると思うのですが)、それぞれの対応状況などを把握とかしないといけないとか、awsアカウントの作成について社内でいろいろ手続きしなくちゃいけないとか、そういうのがあればそれだけでも手間なので、もしこのためにawsのアカウント作ったりするというのであれば、正直3ヶ月に1回、certbotだけ使って、手動でワイルドカードの証明書を更新する方がいいと思います。

■以下、実際に行った作業内容をざっくり書いていきます。

レッツエンクリプトのワイルドカードSSL証明書の更新は、DNSサーバに登録する認証用のtxtレコードを使用します。

サーバにインストールしたcertbotからLet's Encrypt側に認証を要求すると、Let's Encrypt側側から認証に用いるtxtレコードの名称と値が通知されます。
この通知されたtxtレコードを作成(更新の場合は内容(認証キー)を更新)することで、認証が行われます。

DNSサーバ内のレコードを書き換える必要があるので、これを自動化したい場合は、

・レコードの編集がプログラムで行うことができるDNSサーバ
・certbotがDNSにアクセスしてレコードを書き換えられるようにするプログラム
が必要です。
上記の設定ができたら、certbotをcronに登録し、月一などで起動させる形で自動更新できるようになります。

この為にドメインのDNSをawsのroute53に変更しました。awsだと、上記の機能とそれを利用するためのプラグインがそろっています。

awsでは、各種サービスにアクセスするアカウントを細かく設定できるIAMという機能があります。ここではプログラムからawsのサービスにアクセスするためのアカウントを作成することができますし、その対象としてのroute53を設定することができます。

awsで行うことをざっくりまとめますと、
・ドメインのDNSをroute53にする
・IAMで、プログラムからアクセスする為のアカウントを作り、そのアカウントにroute53の編集権限を持たせる
ということです。

DNSをroute53に移したら、まずは通常の手順でcertbotを使用して、手動でワイルドカードのSSL認証が動作することを確認しておいてください。

次にAレコードに指定されているサーバで(certbotのインストールされているサーバ)で、awsで実際に自動更新を行うプログラムである「certbot-dns-route53」をインストールします。これはcertbotの機能追加です。

インストール出来たら、certbotに、
・先ほどawsで設定したIAMのアカウント情報
・該当ドメインのSSL証明書取得手続きに先ほどインストールしたcertbot-dns-route53を使用する旨
の設定を行います。

まず、
シークレットキーなどを保存するディレクトリをrootのユーザーディレクトリに作成
# mkdir ~/.aws
# vi .aws/config

内容は、以下のようなものになります。

[default]
aws_access_key_id=●●●●●●●●●●●●●●●●●●●●●●●●●●●●
aws_secret_access_key=●●●●●●●●●●●●●●●●●●●●●●●●●●●●

上記のファイルができましたら、
certbot にcertbot-dns-route53を使用する旨の設定を行っていきます。
アパッチだと、
certbot -i apache
という形で実行できました。
設定のためにいろいろと聞かれますので、
certbot-dns-route53を使う旨設定しました。

設定が終わったら、実際に更新作業を行ってみます。
certbot certonly --dns-route53 --force-renew --rsa-key-size 4096 -d ドメイン名 -d *.ドメイン名 --server
という形で実行できました。ブラウザから証明書の日付を確認すると切り替わっていました。

■参考リンク

・実際の作業詳細はこちらを参考にさせて頂きました。:http://blog.mwix.io/archives/233
・IAMとは:https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/introduction.html
・route53をネームサーバとして使用する:https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/migrate-dns-domain-in-use.html

以上になります。

※サムネイル・トップ画像は「https://youtu.be/r4Fgt2-ybf4」のスクリーンショットです。

~この記事の著者~

サイト制作に関するご相談はこちら

 03-5961-5681 平日10:00~19:00

メールフォーム

あなたが
サイトに
求める要素
あなたがサイトに求める0要素