証明書をリクエストし、発行済み証明書を表示する
このトピックでは、Certificate Authority Service に証明書をリクエストし、発行済みの証明書を表示する方法について説明します。
準備
CA Service 証明書リクエスト元(roles/privateca.certificateRequester
)または CA Service 証明書マネージャー(roles/privateca.certificateManager
)の IAM ロールがあることを確認します。 CA Service の事前定義された IAM のロールの詳細については、IAM を使用したアクセス制御をご覧ください。
プリンシパルに IAM ロールを付与する方法については、単一のロールを付与するをご覧ください。
概要
証明書は、次の方法でリクエストできます。
- 独自の秘密鍵または公開鍵を生成し、証明書署名リクエスト(CSR)を送信します。
- CA サービスに秘密鍵または公開鍵を作成させます。
- 既存の Cloud Key Management Service(Cloud KMS)鍵を使用します。
CSR を使用して証明書をリクエストする
続行する前に、CSR を生成する必要があります。CSR を生成したら、次の手順を行います。
コンソール
Google Cloud コンソールの [Certificate Authority Service] ページに移動します。
[CA マネージャー] タブをクリックします。
発行元の CA の名前をクリックします。
CA の詳細ページの下部にある [証明書をリクエスト] をクリックします。
省略可: 証明書テンプレートを使用する場合は、[ ] をクリックし、リストからテンプレートを選択して、[保存] をクリックします。
[CSR を提供] をクリックします。
省略可: 自動生成された証明書名を上書きするには、[証明書名] フィールドにカスタム名を入力します。
省略可: 証明書のカスタム有効期間を選択するには、[有効期間] フィールドに値を入力します。
CSR をコピーして [証明書 CSR] ボックスに貼り付けます。CSR をアップロードするには、[ブラウジング] をクリックします。
[次へ] をクリックします。
署名済み証明書をダウンロードする
- 証明書をコピーするには、[
.crt
ファイルの形式でダウンロードするには、[ 証明書をダウンロード] をクリックします。
] をクリックします。
証明書を - 省略可: 証明書チェーンをダウンロードするには、 [証明書チェーンをダウンロード] をクリックします。
- [完了] をクリックします。
gcloud
gcloud privateca certificates create CERT_ID \
--issuer-pool POOL_ID \
--csr CSR_FILENAME \
--cert-output-file CERT_FILENAME \
--validity "P30D"
次のように置き換えます。
- CERT_ID: 証明書の一意の識別子。
- POOL_ID: CA プールの名前。
- CSR_FILENAME: PEM エンコードされた CSR を保存するファイル。
--validity
フラグは、証明書の有効期間を定義します。これはオプションのフラグで、デフォルト値は 30 日です。
gcloud privateca certificates create
コマンドの詳細については、gcloud privateca certificates create をご覧ください。
Terraform
REST API
openssl
などの任意の方法で、証明書署名リクエスト(CSR)を生成します。JSON 用にエンコードされた CSR の例を次に示します。
-----BEGIN CERTIFICATE REQUEST-----\nMIIChTCCAW0CAQAwQDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQ8wDQYDVQQK\nDAZKb29uaXgxEzARBgNVBAMMCmpvb25peC5uZXQwggEiMA0GCSqGSIb3DQEBAQUA\nA4IBDwAwggEKAoIBAQCnyy+5vcRQUBPqAse3ojmWjyUvhcJK6eLRXpp0teEUF5kg\nHb2ov8gYXb9sSim5fnvs09dGYDKibSrL4Siy7lA/NzMzWtKwyQQeLIQq/cLUJVcd\ndItJ0VRcqr+UPkTCii2vrdcocNDChHM1J8chDdl6DkpYieSTqZwlPcWlQBGAINmT\nT3Q0ZarIVM5l74j13WPuToGrhbVOIZXWxWqJjlHbBA8B/VKtSRCzM1qG60y8Pu2f\n6c78Dfg8+CGRzGwnz8aFS0Yf9czT9luNHSadS/RHjvE9FPZCsinz+6mJlXRcphi1\nKaHsDbstUAhse1h5E9Biyr9SFYRHxY7qRv9aSJ/dAgMBAAGgADANBgkqhkiG9w0B\nAQsFAAOCAQEAZz+I9ff1Rf3lTewXRUpA7nr5HVO1ojCR93Pf27tI/hvNH7z7GwnS\noScoJlClxeRqABOCnfmVoRChullb/KmER4BZ/lF0GQpEtbqbjgjkEDpVlBKCb0+L\nHE9psplIz6H9nfFS3Ouoiodk902vrMEh0LyDYNQuqFoyCZuuepUlK3NmtmkexlgT\n0pJg/5FV0iaQ+GiFXSZhTC3drfiM/wDnXGiqpbW9WmebSij5O+3BNYXKBUgqmT3r\nbryFydNq4qSOIbnN/MNb4UoKno3ve7mnGk9lIDf9UMPvhl+bT7C3OLQLGadJroME\npYnKLoZUvRwEdtZpbNL9QhCAm2QiJ6w+6g==\n-----END CERTIFICATE REQUEST-----
証明書をリクエストする
HTTP メソッドと URL:
POST https://privateca.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/caPools/POOL_ID/certificates?certificate_id=CERTIFICATE_ID
リクエストの本文(JSON):
{ "lifetime": { "seconds": 3600, "nanos": 0 }, "pem_csr": "PEM_CSR" }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "name": "projects/project-id/locations/location/certificateAuthorities/ca-id/certificates/certificate-id", "pemCertificate": "-----BEGIN CERTIFICATE-----...", "certificateDescription": {...} }
自動生成された鍵を使用して証明書をリクエストする
コンソール
Google Cloud コンソールを使用して、クライアントまたはサーバーの TLS 証明書を生成できます。
Google Cloud コンソールで、[Certificate Authority Service] ページに移動します。
[CA マネージャー] タブをクリックします。
発行元の CA の名前をクリックします。
[認証局] の詳細ページの下部にある [証明書をリクエスト] をクリックします。
省略可: 証明書テンプレートを使用する場合は、[ ] をクリックし、リストからテンプレートを選択して、[保存] をクリックします。
[詳細を入力] をクリックします。
省略可: 自動生成された証明書名を一意のカスタム名に置き換えます。
省略可: 証明書のカスタム有効期間を選択するには、[有効期間] フィールドに値を入力します。
ドメイン名の追加
- [ドメイン名の追加] で、[ドメイン名 1] フィールドにドメイン名を入力します。
- 省略可: 複数のドメイン名を追加する場合は、[アイテムを追加] をクリックし、[ドメイン名 2] フィールドに別のドメイン名を入力します。
鍵の拡張的用途
省略可: [鍵の拡張的用途] で、ユースケースに応じて次のオプションを選択します。
- サーバー TLS: これらの証明書を使用すると、サーバーの ID を認証できます。
- クライアント TLS: これらの証明書は、リクエスト元の ID の認証に使用できます。
[次へ] をクリックします。
鍵のサイズとアルゴリズムを構成する
- 省略可: [鍵のサイズとアルゴリズムを構成する] で、リストから署名鍵のサイズとアルゴリズムを選択します。この手順をスキップすると、SHASSA-PSS の 2048 ビットの鍵(SHA 256 ダイジェストを使用)が使用されます。署名鍵とアルゴリズムの選択については、鍵アルゴリズムを選択するをご覧ください。
- [続行] をクリックします。
署名済み証明書をダウンロードする
- 省略可: PEM エンコードされた証明書チェーンをダウンロードするには、[証明書チェーンをダウンロード] をクリックします。
省略可: 関連付けられた PEM でエンコードされた秘密鍵をダウンロードするには、[秘密鍵をダウンロード] をクリックします。
[完了] をクリックします。
gcloud
自動生成された鍵機能を使用するには、Python Cryptographic Authority(PyCA)ライブラリをインストールする必要があります。PyCA 暗号ライブラリをインストールする手順については、PyCA 暗号ライブラリを含めるをご覧ください。
証明書を作成するには、次の gcloud
コマンドを使用します。
gcloud privateca certificates create \
--issuer-pool POOL_ID \
--generate-key \
--key-output-file KEY_FILENAME \
--cert-output-file CERT_FILENAME \
--dns-san "DNS_NAME" \
--use-preset-profile "CERTIFICATE_PROFILE"
次のように置き換えます。
- POOL_ID: CA プールの名前。
- KEY_FILENAME: 生成される秘密鍵ファイルを書き込むパス。
- CERT_FILENAME: PEM エンコードされた証明書チェーン ファイルを書き込むパス。証明書チェーンはエンドユーザーからルートに並べられます。
- DNS_NAME: 1 つ以上の DNS サブジェクト代替名(SAN)。カンマ区切りで指定します。
- CERTIFICATE_PROFILE: 証明書プロファイルの一意の識別子。
たとえば、エンドユーザーの TLS には
leaf_server_tls
を使用します。
gcloud
コマンドでは、次のフラグが指定されています。
--generate-key
: マシン上で新しい RSA-2048 秘密鍵を生成します。
次の任意のフラグの組み合わせを使用することもできます。
--dns-san
: 1 つ以上のカンマ区切りの DNS SAN を渡すことができます。--ip-san
: 1 つ以上のカンマ区切りの IP SAN を渡すことができます。--uri-san
: 1 つ以上のカンマ区切りの URI SAN を渡すことができます。--subject
: 証明書のサブジェクトの X.501 名を渡すことができます。
gcloud privateca certificates create
コマンドの詳細については、gcloud privateca certificates create をご覧ください。
Go
CA Service への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
CA Service への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
CA Service への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
既存の Cloud KMS 鍵を使用して証明書をリクエストする
Cloud KMS 鍵を使用してエンド エンティティ サーバーの TLS 証明書を作成するには、次のコマンドを実行します。
gcloud privateca certificates create \
--issuer-pool POOL_ID \
--kms-key-version projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KEY_RING/cryptoKeys/KEY/cryptoKeyVersions/KEY_VERSION \
--cert-output-file CERT_FILENAME \
--dns-san "DNS_NAME" \
--use-preset-profile "leaf_server_tls"
次のように置き換えます。
- POOL_ID: CA プールの名前。
- PROJECT_ID: プロジェクト ID。
- LOCATION_ID: キーリングのロケーション。
- KEY_RING: 鍵が配置されているキーリングの名前。
- KEY: 鍵の名前。
- KEY_VERSION: 鍵のバージョン。
- CERT_FILENAME: PEM エンコードされた証明書チェーン ファイルのパス。証明書チェーン ファイルはエンドユーザーからルートに並べ替えられます。
- DNS_NAME: カンマ区切りの DNS SAN。
証明書を使用した一般的なオペレーションの実行
このセクションでは、証明書を使用して特定の一般的なオペレーションを行う方法について説明します。
CA プール内の特定の CA からの証明書を発行する
gcloud
証明書の発行で CA プール内の特定の CA をターゲットにするには、証明書を発行する必要がある CA の CA_ID で --ca
フラグを追加します。
gcloud privateca certificates create \
--issuer-pool POOL_ID \
--ca CA_ID \
--generate-key \
--key-output-file KEY_FILENAME \
--cert-output-file CERT_FILENAME \
--dns-san "DNS_NAME" \
--use-preset-profile "leaf_server_tls"
コンソール
Google Cloud コンソールは、特定の CA からの証明書の発行のみをサポートしています。自動生成された鍵を使用して証明書をリクエストするセクションまたは CSR を使用して証明書をリクエストするセクションの手順に従って、証明書を発行する必要がある CA 選択します。
Terraform
発行済み証明書を表示
コンソール
Google Cloud コンソールで、[Certificate Authority Service] ページに移動します。
[CA マネージャー] タブをクリックします。
[認証局] ページで、CA の名前をクリックします。
[認証局] の詳細ページの下部にある [発行済み証明書を表示] をクリックして、CA が発行した証明書のリストを表示します。
証明書は、[すべての証明書] ページで確認できます。詳細には、証明書のステータス、発行元の CA、CA を含む CA プール、証明書の有効期限などがあります。
gcloud
CA プール内の特定の CA が発行するすべての証明書を一覧表示するには、次の gcloud
コマンドを使用します。
gcloud privateca certificates list --issuer-pool ISSUER_POOL --ca CA_NAME
gcloud privateca certificates list
コマンドの詳細については、gcloud privateca certificates list をご覧ください。
特定のロケーションのすべての CA のすべての証明書を一覧表示するには、次の gcloud
コマンドを使用します。
gcloud privateca certificates list --location LOCATION
Go
CA Service への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
CA Service への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
CA Service への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
1 つの証明書の詳細を表示する
コンソール
Google Cloud コンソールで、[Certificate Authority Service] ページに移動します。
[CA マネージャー] タブでターゲットの CA を選択します。
CA 名をクリックします。
[認証局] の詳細ページの一番下にある、[発行済み証明書を表示] をクリックして発行済み証明書のリストを表示します。
ダウンロードする証明書の [アクション] 列の [
] をクリックします。[ダウンロード] で、[証明書] をクリックします。[証明書チェーン] をクリックすると、証明書チェーンをダウンロードできます。
gcloud
証明書の詳細を表示するには、次のコマンドを実行します。
gcloud privateca certificates describe CERT_NAME \
--issuer-pool POOL_ID
gcloud privateca certificates describe
コマンドの詳細については、gcloud privateca certificates describe をご覧ください。
PEM エンコードされた X.509 証明書チェーンとファイルにエクスポートするには、次のコマンドを実行します。
gcloud privateca certificates export CERT_NAME \
--issuer-pool POOL_ID \
--include-chain \
--output-file certificate-file
gcloud privateca certificates export
コマンドの詳細については、gcloud privateca certificates export をご覧ください。
証明書の所持証明
秘密鍵の所持を証明することで、証明書のリクエスト元がその証明書の秘密鍵を保持できるようになります。CA Service は、リクエスト元が RFC 2986 に従って PKCS #10 CSR を提供している場合にのみ、所持の証明を確認します。CertificateConfig によるリクエストなど、他の形式の証明書リクエストの所持証明は適用されません。
証明書の所持者がその証明書の秘密鍵を持っているかどうかを検証する証明書を受け入れるのは、クライアント アプリケーションの責任です。証明書の発行時に所有証明チェックを適用することは、誤動作するクライアントから保護するための多層防御の一つです。このようなクライアントが存在することは、CA が所持証明を確認するかどうかに関係なく、セキュリティの脆弱性を引き起こす可能性があります。
次のステップ
- 証明書プロファイルについて学習する。
- 証明書の取り消し方法を学習する。
- 証明書の並べ替えとフィルタリング方法を学習する。
- Google Cloud CLI を使用して証明書を管理する方法を学習する。