- セクティゴ・コモドSSLトップ
- > サポート
サポート
◆ こちらからサポート記事を検索いただけます
注文・設定方法など (CaaS関連)
GCP (Google Cloud) でcertbot をつかってCloudDNSに設定を自動付与しCloud Load Balancingに証明書を自動設定させるための設定
TIP
Google Cloud Load Balancingは、Certbotが生成した証明書(自己管理型証明書)を直接自動更新する機能を持っていないため、証明書の更新とロードバランサへの適用を自動化するには、Certbotのフックスクリプトとgcloudコマンドを組み合わせる必要があります。1.CertbotとGCPの認証設定
CertbotがCloud DNSとCloud Load Balancingを操作できるように、サービスアカウントを作成し、適切なIAMロールを付与します。サービスアカウントの作成:
Bashでの実行コマンドサンプル
gcloud iam service-accounts create certbot-automation --display-name="Certbot Automation"必要な権限の付与:
| Cloud DNS | dns.admin ロール |
| Cloud Load Balancing | compute.sslCertificates.create, compute.sslCertificates.delete, compute.targetHttpsProxies.update ロール |
| IAMカスタムロール | 最小権限の原則に従い、これらの権限のみを持つカスタムロールを作成することも推奨されます。 |
Bash
# Cloud DNS の権限を付与gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
--member="serviceAccount:certbot-automation@YOUR_PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/dns.admin"
# Cloud Load Balancing の権限を付与
gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
--member="serviceAccount:certbot-automation@YOUR_PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/compute.admin" # 簡略化のため。本番環境では最小権限を推奨
サービスアカウントキーの作成: Certbotを実行するマシンにサービスアカウントキーのJSONファイルをダウンロードします。
Bash
gcloud iam service-accounts keys create ./certbot-key.json \--iam-account="certbot-automation@YOUR_PROJECT_ID.iam.gserviceaccount.com"
このJSONファイルのパスを環境変数GOOGLE_APPLICATION_CREDENTIALSに設定してください。
2.Certbotコマンドとフックスクリプトの作成
Certbotの--deploy-hookオプションを利用して、証明書が更新されるたびにスクリプトを実行します。Certbotコマンドの実行例
SectigoのACMEサーバーと連携し、Cloud DNSでドメイン認証を行うコマンドです。
Bash
certbot certonly \--email your-email@example.com \
--dns-google \
--dns-google-credentials ./certbot-key.json \
--agree-tos \
--server https://acme.sectigo.com/v2/DV \
--domain example.com,www.example.com \
--non-interactive \
--deploy-hook /path/to/gcp-deploy-hook.sh
| --dns-google | CertbotがCloud DNSでDNS-01チャレンジを自動的に処理するためのプラグインを指定します。 |
| --dns-google-credentials | 作成したサービスアカウントキーのパスを指定します。 |
| --server https://acme.sectigo.com/v2/DV | SectigoのACMEサーバーのエンドポイントを指定します。 |
| --deploy-hook | 証明書の更新が成功したときに実行するスクリプトを指定します。 |
3.フックスクリプト (gcp-deploy-hook.sh) の内容
このスクリプトは、新しく生成された証明書をGCPにアップロードし、Cloud Load Balancingのターゲットプロキシを更新する役割を担います。
Bash
#!/bin/bash
# 環境変数から証明書、キー、チェインのパスを取得
CERT_PATH=$RENEWED_LINEAGE/fullchain.pem
KEY_PATH=$RENEWED_LINEAGE/privkey.pem
CERT_NAME="ssl-cert-$(date +%Y%m%d%H%M%S)"
# 1. 新しいSSL証明書をGCPにアップロード
gcloud compute ssl-certificates create $CERT_NAME \
--certificate-file=$CERT_PATH \
--private-key-file=$KEY_PATH \
--global
# 2. ターゲットHTTPSプロキシを更新
# ロードバランサのターゲットプロキシ名を指定してください
TARGET_PROXY_NAME="your-target-https-proxy"
# 既存の証明書を取得し、新しい証明書を追加
CURRENT_CERTS=$(gcloud compute target-https-proxies describe $TARGET_PROXY_NAME --global --format="value(sslCertificates)")
# 新しい証明書をリストの先頭に追加して更新
NEW_CERTS=$CERT_NAME,$CURRENT_CERTS
gcloud compute target-https-proxies update $TARGET_PROXY_NAME \
--ssl-certificates=$NEW_CERTS \
--global
# 3. 古い証明書をクリーンアップ
# 注: 古い証明書が使用中でないことを確認してから削除してください。
# ロードバランサが新しい証明書に切り替わるまでに時間差があるため、
# 即時削除は避けるべきです。
# 以下は、古い証明書を識別して削除するための例です。
OLD_CERT_NAME="your-old-cert-name" # 手動または別の方法で取得
gcloud compute ssl-certificates delete $OLD_CERT_NAME --global --quiet
スクリプトの解説
CERT_PATH, KEY_PATH: Certbotは更新された証明書とキーのパスをRENEWED_LINEAGE環境変数で提供します。スクリプト内でこの変数を活用します。
| gcloud compute ssl-certificates create | fullchain.pem(証明書と中間証明書)とprivkey.pem(秘密鍵)を指定して、新しい自己管理型SSL証明書をGCPにアップロードします。 |
| gcloud compute target-https-proxies update | ロードバランサに紐づいているターゲットHTTPSプロキシの証明書を更新します。--ssl-certificatesオプションには、使用する証明書のリストをカンマ区切りで指定します。新しい証明書をリストの先頭に置くことで、GCPが新しい証明書を優先的に使用するようになります。 |
| 古い証明書の削除 | 自動化の際には、古い証明書を定期的にクリーンアップする仕組みも重要です。ロードバランサが新しい証明書を完全に利用していることを確認してから削除する必要があります。 |
4.自動化とスケジューリング
このプロセス全体を自動化するために、cronジョブを使用します。コード スニペット
0 0 * * * /usr/bin/certbot renew --quietこのcronジョブは毎日深夜0時にcertbot renewコマンドを実行します。Certbotは証明書の有効期限が30日以内になった場合にのみ更新処理とフックスクリプトの実行を行います。
⚠️ 注意事項
| gcloudコマンドのインストール | Certbotを実行するマシンにGoogle Cloud SDKがインストールされ、認証情報が正しく設定されていることを確認してください。 |
| IAM権限 | compute.adminロールは広範な権限を持つため、本番環境では最小権限の原則に基づき、compute.sslCertificates.createやcompute.targetHttpsProxies.updateなど、必要な権限のみを持つカスタムロールを推奨します。 |
| 証明書のクリーンアップ | 古い証明書の削除は慎重に行ってください。新しい証明書が正常に機能していることを確認してから削除しないと、サービス停止につながる可能性があります。 |
| SectigoのACME接続先 | SectigoのACMEエンドポイントは、プランや製品によって異なる場合があります。ご自身の契約内容を確認し、適切なエンドポイントを使用してください。 |
マニュアル
- 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プロトコルと互換性がありますか?