- セクティゴ・コモドSSLトップ
- > サポート
サポート
◆ こちらからサポート記事を検索いただけます
注文・設定方法など (CaaS関連)
AWS (Route 53)に対してDNSチャレンジ方式で自動で証明書を取得しALBのリスナーに自動で証明書を適用する方法
※Certbotを利用しRoute 53に認証設定を設定し、自動取得した証明書をELBに自動設定する方法
1. Route 53でのTXTレコード自動設定 (Certbotプラグイン)
ACMEクライアントとして最も普及している「Certbot」を利用するのが一般的です。Certbotには、AWS Route 53と連携するための専用プラグインがあります。
1.1.前提条件
AWS IAMユーザー/ロールの準備: CertbotがRoute 53のDNSレコードを操作するための権限を持つIAMユーザーまたはIAMロールが必要です。以下の権限を付与したポリシーを作成し、Certbotを実行する環境(EC2インスタンスなど)にアタッチします。
| route53:ListHostedZones | ホストゾーンの一覧を取得する権限 |
| route53:GetChange | DNSレコードの変更が完了したか確認する権限 |
| route53:ChangeResourceRecordSets | TXTレコードを自動的に追加・削除する権限 |
AWS認証情報の準備CertbotがAWS APIにアクセスできるよう、以下のいずれかの方法で認証情報を設定します。
| IAMロール | EC2インスタンスにIAMロールをアタッチする事を推奨します。認証情報は自動的に引き継がれます。 |
| 環境変数 | AWS_ACCESS_KEY_IDとAWS_SECRET_ACCESS_KEYを設定します。 |
| クレデンシャルファイル | ~/.aws/credentialsに認証情報を設定します。 |
1.2.CertbotとRoute 53プラグインのインストール
使用しているOS(Ubuntu, CentOSなど)に応じて、CertbotとそのRoute 53プラグインをインストールします。
コマンド実行例
# Ubuntuの場合
sudo apt-get update
sudo apt-get install certbot python3-certbot-dns-route53
# CentOSの場合
sudo yum install certbot python3-certbot-dns-route53
1.1.1.3. EAB(External Account Binding)と証明書の取得
SectigoのようなACMEプロバイダーでは、外部アカウントバインディング 通称;EAB (External Account Binding)が要求されます。EABを利用することで、アカウントを事前に作成し、そのアカウントに紐づいた証明書を発行できます。
EABの情報(キーIDとhmacキー)は、ACMEプロバイダー(Sectigo)から取得します。
以下のコマンドで証明書を取得します。
ドメイン認証タイプ取得のコマンド実行例
sudo certbot certonly \--dns-route53 \
--dns-route53-propagation-seconds 60 \
-d "example.com" -d "*.example.com" \
--server https://acme.sectigo.com/v2/DV \
--eab-kid Sectigo Japanから提供されるEABのキーID \
--eab-hmac-key Sectigo Japanから提供されるEABのHMACキー
| certonly | 証明書の取得のみを行い、ウェブサーバーの設定は変更しません。 |
| --dns-route53 | Route 53プラグインを使用することを指定します。 |
| --dns-route53-propagation-seconds 60: | DNSレコードの伝播を待つ時間を指定(デフォルトは10秒)します、Route 53の伝播には時間がかかる場合があるため、60秒程度に設定することをお勧めします。 ※Certbotの新しいバージョンでは--dns-route53-propagation-secondsオプションが不要になってます! 最新のCertbotでは、DNSレコードの伝播(propagation)が完了するまで自動的に待機する仕様になったため手動で秒数を指定する必要がなくなりました。もしも警告が出る場合にはこちらの指定を削除してください |
| -d "example.com" -d "*.example.com": |
証明書を取得したいドメインを引数-d で指定します。ワイルドカード証明書(*.example.com)を取得する場合は、DNSチャレンジが必須となります |
| --server | セクティゴACMEプロバイダーのディレクトリURLを指定します。 ドメイン認証タイプなら https://acme.sectigo.com/v2/DV 企業認証タイプなら https://acme.sectigo.com/v2/OV |
| --eab-kid | Sectigo Japanから提供されるEABのKey IDを指定します。 |
| --eab-hmac-key | Sectigo Japanから提供されるEABのHMACキーを指定します。 |
このコマンドを実行すると、Certbotは自動的にRoute 53に_acme-challengeのTXTレコードを作成し、ACMEプロバイダーによるドメイン認証が成功すると、証明書が/etc/letsencrypt/live/example.com/などに保存されます。
2. ELBへの証明書自動設定
Certbotは証明書の取得と更新は自動化できますが、取得した証明書をELBに自動的に適用する機能は標準ではありません。このプロセスは、Certbotの--deploy-hookを利用してスクリプトを呼び出すことで自動化します。2.1. 必要なIAM権限
ELB(Application Load Balancer: ALB)のリスナーに証明書を適用するため、以下のIAM権限を持つIAMユーザー/ロールが必要です。| acm:ImportCertificate | 証明書をAWS Certificate Manager (ACM)にインポートする権限 |
| acm:ListCertificates | ACMにインポートされた証明書の一覧を取得する権限 |
| elasticloadbalancing:SetCertificate または elasticloadbalancing:AddListenerCertificate |
ELBリスナーに証明書を設定する権限 |
2.2. デプロイフックスクリプトの作成
Certbotが証明書を更新した際に実行されるデプロイフックスクリプトを作成します。このスクリプトは、新しい証明書をACMにインポートし、ALBのリスナーに適用する役割を担います。
スクリプト例 (/path/to/your/deploy-hook.sh)
Bashスクリプト例
#!/bin/bash# ドメイン名
DOMAIN=example.com
# ALBのリスナーARN
LISTENER_ARN="arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:listener/app/your-alb-name/abcdefg"
# 証明書ファイルのパス (Certbotによって設定される)
CERT_PATH="/etc/letsencrypt/live/$DOMAIN/fullchain.pem"
PRIVKEY_PATH="/etc/letsencrypt/live/$DOMAIN/privkey.pem"
# ACMに証明書をインポート
# 既存の証明書がある場合、それを更新するために事前にARNを取得する
CERT_ARN=$(aws acm list-certificates --query "CertificateSummaryList[?DomainName==`"$DOMAIN"`].CertificateArn" --output text)
if [ -z "$CERT_ARN" ]; then
echo "Importing new certificate to ACM..."
CERT_ARN=$(aws acm import-certificate \
--certificate file://$CERT_PATH \
--private-key file://$PRIVKEY_PATH \
--query CertificateArn --output text)
else
echo "Updating existing certificate in ACM with ARN: $CERT_ARN"
aws acm import-certificate \
--certificate file://$CERT_PATH \
--private-key file://$PRIVKEY_PATH \
--certificate-arn "$CERT_ARN"
fi
# 証明書が正しくインポートされたか確認
if [ -z "$CERT_ARN" ]; then
echo "Failed to import certificate to ACM."
exit 1
fi
echo "Certificate ARN: $CERT_ARN"
# ALBのリスナーに新しい証明書を適用
echo "Setting new certificate on ELB listener: $LISTENER_ARN"
aws elbv2 modify-listener \
--listener-arn "$LISTENER_ARN" \
--certificates CertificateArn="$CERT_ARN"
echo "Certificate update complete."
※2.3. Certbotコマンドへのデプロイフックスクリプトの追加
Certbotのrunまたはrenewコマンドに、作成したスクリプトを--deploy-hookオプションで追加します。コマンド実行例
# 初回取得時sudo certbot certonly \
--dns-route53 \
-d "example.com" -d "*.example.com" \
--server https://acme-v02.api.sectigo.com/directory \
--eab-kid Sectigo Japanから提供されるEABのキーID \
--eab-hmac-key Sectigo Japanから提供されるEABのHMACキー
--deploy-hook /path/to/your/deploy-hook.sh
※2.4. 自動更新の設定
Certbotは通常、証明書の有効期限が切れる前に自動更新を実行するよう、cronやsystemd timerに設定されます。CRON設定例
# cron.d に設定する場合の例
# 毎日午前3時に自動更新を試行
0 3 * * * root certbot renew --quiet --deploy-hook /path/to/your/deploy-hook.sh
マニュアル
- CSRの生成方法
- 証明書のインストール
- ドメイン認証用サイトシールの設置
- ドメイン認証用セキュアサイトシール
(2012/11/1以降のご注文より) - 企業認証&EV用サイトシールの設置
- コード証明書関連(codesign)
- セキュアEMAIL関連(smime)
- CaaS 自動化関連(ACME)
- IISサーバのみに起因する問題と解消のコツ
- 企業認証/EV認証の電話認証(コールバック)
- Windowsサーバーにおいて不完全な証明書チェーンとなる場合の解消法
- セクティゴの中間証明書及びルート証明書について
- ルート証明書 中間証明書について
- セクティゴサイトシール(trustlogo)のインスト―ル
- 中間CA証明書・ルート証明書について
- ドメインの所有者確認【メール方式:英文の承認メールの表示例】
各種手続きについて
- Multi-Perspective Issuance Corroboration(マルチ視点発行検証)を導入
- 「サーバ証明書」の拡張キーの使用法(EKU)フィールドに「クライアント認証」を記載することを廃止
- 古いSHA1ルート終了における対応につきまして。
- 新ドメイン認証レベルで確認させていただく内容
- オンラインDBへの電話番号確認
- DUNSの新規登録申請はオンラインで簡単
- ドメイン認証レベルで確認させていただく内容
- 企業認証レベルで確認させていただく内容
- 認証レベルに応じた確認・必要書類はなんですか
- 申請ドメインの登録状態を確認しよう :whoisチェック
- 企業情報(登録確認)にはどのような媒体がありますか?
- 無償版SSLとは
- 申請までにご準備いただく物
- お申込みから納品までの流れ
- 費用の支払方法
- お見積書発行依頼
- 請求書の発行依頼
- 更新の申請方法
- 販売パートナ・アフェリエイトパートナーになる。
- ID/パスワードを忘れたら
購入前のご質問
- Sectigo ルート証明書の移行と古いCAの無効化について
- vPRO対応AMT証明書について
- セクティゴの補償とは一体どのようなものでしょうか?
- FileMaker(ファイルメーカー)製品対応SSLについて
- 携帯電話、スマートフォン、タブレット対応状況
- 新旧ドメイン認証タイプの比較
- 携帯電話・スマートフォン対応状況(ユニファイドコミュニケーション)
- ドメイン管理状況の認証 (DCV) を実施
- ブラウザーの互換性
- マルチドメインは何個まで追加できますか
- 追加ドメインの購入はどのように申請するのでしょうか?
- IEの設定の「信頼されたルート証明期間」のなかでどのように表示されますか?
- コードサイニング証明書とはなんですか?
- ユニファイドコミュニケーションとはなんですか?
- どのようにすればSSLをテストできるでしょうか?
- コモドのSSL証明書は顧客のブラウザーで正しく動作するでしょうか?
- 補償とは一体どういう意味でしょうか?
- コモドのSSLはどのバージョンのSSLプロトコルと互換性がありますか?
- SGCとは何でしょうか?
- お申込フォームで間違った申請をしてしまいました。
- 個人でもコードサイニングが購入できますか??
- コモドのSSLはどのバージョンのSSLプロトコルと互換性がありますか?