1
1

More than 1 year has passed since last update.

Certificate Managerでの証明書のデプロイ

Posted at

目的

CertficateManagerを用いてマネージド証明書を発行し、ロードバランサにデプロイする
最後に作成したマップと証明書を削除して完了

Certificate Managerの導入

セキュリティ -> Certificate Managerへ移動する
GUI操作では実施できないようなので、gcloudコマンドにて実施する
貼り付けた画像_2023_09_05_15_28.png

CloudShellからワイルドカード証明書を発行する
-> 発行する証明書:*.xcloudyx.net

ドメインの所有者を証明するため、DNSによる所有者確認を実施する
-> 認証方式:DNS認証

DNS認証の準備

参考URL:DNS 認証を作成する
コマンド:gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME
--domain="DOMAIN_NAME"

AUTHORIZATION_NAMEは、DNS認証を説明する一意の名前
DOMAIN_NAMEは DNS認証を作成するドメインの名前

以下は、xcloudyxcertというAUTHORIZATION_NAMEとし、証明書の発行先を*.xcloudyx.netとした例

cloudshell$ gcloud certificate-manager dns-authorizations create xcloudyxcert --domain="xcloudyx.net"
Create request issued for: [xcloudyxcert]
Waiting for operation [projects/generative-ai-396008/locations/global/operations/operation-1693895544538-60496ca380581-bf15f192-077385d2] to complete...done.                                                
Created dnsAuthorization [xcloudyxcert].

DNS認証のため、xcloudyx.netのネームサーバ(NS)に登録する情報を確認する
コマンド:gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME

以下は、xcloudyxcertの情報を表示

cloudshell$ gcloud certificate-manager dns-authorizations describe xcloudyxcert
createTime: '2023-09-05T06:32:24.587520999Z'
dnsResourceRecord:
  data: c84f2978-8437-454e-95c9-fe41a8ac31db.10.authorize.certificatemanager.goog.
  name: _acme-challenge.xcloudyx.net.
  type: CNAME
domain: xcloudyx.net
name: projects/generative-ai-xxxxxx/locations/global/dnsAuthorizations/xcloudyxcert
updateTime: '2023-09-05T06:32:25.274569446Z'

DNSレコードの追加

CloudDNSに登録した例
貼り付けた画像_2023_09_05_15_54.png

証明書の発行

なぜか公式に作成のコマンドではなく更新しか書いていなかったが、createで実施する
DNS 認証を更新する

cloudshell$ gcloud certificate-manager certificates create wild-xcloudyx-cert --domains="*.xcloudyx.net" --dns-authorizations=xcloudyxcert
Create request issued for: [wild-xcloudyx-cert]
Waiting for operation [projects/generative-ai-396008/locations/global/operations/operation-1693966087221-604a736e3f181-277fac45-a9659a91] to complete...done.                      
Created certificate [wild-xcloudyx-cert].

発行状況の確認、まだ作成中
image.png

cloudshell$ gcloud certificate-manager certificates describe wild-xcloudyx-cert
createTime: '2023-09-06T02:08:07.315172254Z'
managed:
  authorizationAttemptInfo:
  - domain: '*.xcloudyx.net'
    state: AUTHORIZING
  dnsAuthorizations:
  - projects/285464393872/locations/global/dnsAuthorizations/xcloudyxcert
  domains:
  - '*.xcloudyx.net'
  state: PROVISIONING
name: projects/generative-ai-396008/locations/global/certificates/wild-xcloudyx-cert
sanDnsnames:
- '*.xcloudyx.net'
updateTime: '2023-09-06T02:08:07.795064057Z'

しばらく待っていると、certificate managerのコンソールで作成が完了している
貼り付けた画像_2023_09_06_11_13.png

証明書のデプロイ -> ロードバランサ

Certificate Mapの作成

証明書をロードバランサにデプロイする

コマンド:gcloud certificate-manager maps create CERTIFICATE_MAP_NAME

CERTIFICATE_MAP_NAMEは、ターゲット証明書マップの名前

cloudshell$ gcloud certificate-manager maps create certmap
Waiting for 'operation-1693965405419-604a70e40770f-179c67fa-43ecc718' to complete...done.                                                                               
Created certificate map [certmap].

MapEntryの作成

証明書マップエントリを作成する

コマンド:gcloud certificate-manager maps entries create CERTIFICATE_MAP_ENTRY_NAME
--map="CERTIFICATE_MAP_NAME"
--certificates="CERTIFICATE_NAME"
--hostname="HOSTNAME"

CERTIFICATE_MAP_ENTRY_NAMEは、この証明書マップエントリを説明する一意の名前
CERTIFICATE_MAP_NAMEは、この証明書マップエントリが添付されている証明書マップの名前
CERTIFICATE_NAMEは、この証明書マップエントリに関連付ける証明書の名前
HOSTNAMEは、この証明書マップエントリに関連付けるホスト名

cloudshell$ gcloud certificate-manager maps entries create mapentry --hostname=www.xcloudyx.net --map=certmap --certificates=wild-xcloudyx-cert 
Waiting for 'operation-1693966948109-604a76a340bb6-d6b36f24-71c8ac23' to complete...done.                                                                                          
Created certificate map entry [mapentry].

MapEntryの確認

cloudshell$ gcloud certificate-manager maps entries describe mapentry --map=certmap
certificates:
- projects/285464393872/locations/global/certificates/wild-xcloudyx-cert
createTime: '2023-09-06T02:22:28.190060610Z'
hostname: www.xcloudyx.net
name: projects/generative-ai-396008/locations/global/certificateMaps/certmap/certificateMapEntries/mapentry
state: PENDING
updateTime: '2023-09-06T02:22:28.580995699Z'

ターゲットプロキシの証明書更新

既存のロードバランサに適用されている証明書を、CertificateManagerにある証明書で置き換える

現状の状態、"cert"という証明書がわり当たっている
貼り付けた画像_2023_09_06_14_19.png

コマンド:gcloud compute target-https-proxies update PROXY_NAME
--certificate-map="CERTIFICATE_MAP_NAME"

PROXY_NAMEは、ターゲットプロキシの名前
CERTIFICATE_MAP_NAMEは、証明書マップエントリとそれに関連付けられた証明書を参照する証明書マップの名前

cloudshell$ gcloud compute target-https-proxies update serverless-lb-target-proxy --certificate-map=certmap 
Updated [https://www.googleapis.com/compute/v1/projects/generative-ai-396008/global/targetHttpsProxies/serverless-lb-target-proxy].

更新後のターゲットプロキシ

正しく"certmap"に更新された
貼り付けた画像_2023_09_06_14_23.png

証明書の削除

証明書の削除にはmap,mapentryの削除を実施した上で、証明書の削除が必要

クリーンアップ

マップエントリの削除

cloudshell$ gcloud certificate-manager maps entries delete mapentry --map=certmap 
You are about to delete certificate map entry 'mapentry' from certificate map 'certmap'

Do you want to continue (Y/n)?  Y

Waiting for 'operation-1693979758698-604aa65c61fca-35704edd-cac7e4db' to complete...done.                                                                                                                    
Deleted map entry [mapentry].

マップの削除

cloudshell$ gcloud certificate-manager maps delete certmap                                                                                                            
You are about to delete certificate map 'certmap'

Do you want to continue (Y/n)?  Y

Waiting for 'operation-1693979767884-604aa665249a1-e9835332-f59791b7' to complete...done.                                                                                                                    
Deleted map [certmap].

証明書の削除

cloudshell$ gcloud certificate-manager certificates delete wild-xcloudyx-cert                                                                                         
You are about to delete certificate 'wild-xcloudyx-cert'

Do you want to continue (Y/n)?  Y

Waiting for 'operation-1693979781963-604aa67291dbe-a3d41679-76159aaa' to complete...done.                                                                                                                    
Deleted certificate [wild-xcloudyx-cert].
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1