証明書をリクエスト
このページでは、Certificate Authority Service で証明書リクエストを作成する方法について説明します。
証明書をリクエストするには、次の方法を使用します。
- 独自の秘密鍵または公開鍵を生成し、証明書署名リクエスト(CSR)を送信します。
- CA Service によって自動生成された秘密鍵または公開鍵を使用します。
- 既存の Cloud Key Management Service(Cloud KMS)鍵を使用します。
始める前に
証明書を発行するために必要な権限を取得するには、CA Service 証明書リクエスト元(
roles/privateca.certificateRequester
)または CA Service 証明書マネージャー(roles/privateca.certificateManager
)の IAM ロールの付与を管理者に依頼してください。CA Service の事前定義された IAM ロールの詳細については、IAM を使用したアクセス制御をご覧ください。
プリンシパルに IAM ロールを付与する方法については、単一のロールを付与するをご覧ください。
CSR を使用して証明書をリクエストする
証明書を取得するには、CSR を生成し、これを使用して証明書をリクエストします。
CSR を生成する
OpenSSL を使用して CSR を生成する方法の詳細については、OpenSSL で CSR を生成する方法をご覧ください。CSR を生成するときに、以下のサンプル構成ファイルを参照用として使用することもできます。
サンプル構成ファイルを使用する手順は次のとおりです。
次の構成を使用して、
csr.cnf
という名前の構成ファイルを作成します。cat << EOF > csr.cnf [req] distinguished_name = req_distinguished_name req_extensions = v3_req prompt = no [req_distinguished_name] CN = example.com [v3_req] keyUsage = critical, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] DNS.1 = example.com DNS.2 = www.example.com EOF
このサンプルでは、2,048 ビットの RSA 鍵(パスフレーズで暗号化)と、次を含む対応する CSR を生成します。
- 主体者識別名 の
commonName
属性 subjectAlternativeName
拡張子keyUsage
拡張機能(重大とマークされる)extendedKeyUsage
拡張子
必要に応じてパラメータを変更します。
x509v3_config
構成ファイルの形式を使用して X.509 証明書と CSR の拡張子を定義するには、OpenSSL ドキュメントをご覧ください。- 主体者識別名 の
次の
openssl
コマンドを実行して、CSR と対応する秘密鍵を生成します。openssl req -newkey rsa:2048 -out csr.pem -keyout key.pem -config csr.cnf
このコマンドにより、次のファイルが生成されます。
csr.pem
: CA に送信する準備が整った CSRkey.pem
: 秘密鍵。安全な場所に保管する必要があります
証明書リクエストで
csr.pem
ファイルを使用します。
CSR を使用して証明書リクエストを送信する
CSR を使用して証明書をリクエストする手順は次のとおりです。
Console
Google Cloud コンソールの [Certificate Authority Service] ページに移動します。
[証明書をリクエスト] をクリックします。
リージョンを選択します。 リージョンは、使用する CA プールのリージョンと同じである必要があります。
CA プールを選択します。
省略可: CA プールから特定の CA を選択します。証明書の発行に特定の CA を選択すると、その CA への依存関係が作成され、CA のローテーションが難しくなります。
省略可: 証明書テンプレートを選択します。証明書テンプレートを使用する場合は、証明書テンプレートのポリシーが、選択した CA プールのポリシーと競合していないことを確認します。
[Provide Certificate Signing Request (CSR)] をクリックし、[Next] をクリックします。証明書の詳細が表示されます。
省略可: 自動生成された証明書名を上書きするには、[証明書名] フィールドにカスタム名を入力します。証明書の作成後は、証明書名の削除や再利用はできません。
省略可: 証明書のカスタム有効期間を選択するには、[有効期間] フィールドに値を入力します。
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)を生成します。次の CSR は JSON 用にエンコードされています。
-----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": {...} }
自動生成された鍵を使用して証明書をリクエストする
Console
Google Cloud コンソールを使用して、クライアントまたはサーバーの TLS 証明書を生成できます。
Google Cloud コンソールの [Certificate Authority Service] ページに移動します。
[証明書をリクエスト] をクリックします。
リージョンを選択します。 リージョンは、使用する CA プールのリージョンと同じである必要があります。
CA プールを選択します。
[詳細を手動で入力する] をクリックします。証明書の詳細が表示されます。
省略可: 自動生成された証明書名を一意のカスタム名に置き換えます。
省略可: 証明書のカスタム有効期間を選択するには、[有効期間] フィールドに値を入力します。
ドメイン名の追加
- [ドメイン名を追加] で、[ドメイン名 1] フィールドにドメイン名を入力します。
- 省略可: 複数のドメイン名を追加する場合は、[アイテムを追加] をクリックし、[ドメイン名 2] フィールドに別のドメイン名を入力します。
鍵の拡張的用途
省略可: [鍵の拡張的用途] で、ユースケースに応じて次のオプションを選択します。
- クライアント TLS: これらの証明書により、リクエスト元の ID を認証できます。
- サーバー TLS: これらの証明書を使用すると、サーバーの ID を認証できます。
[次へ] をクリックします。
鍵のサイズとアルゴリズムを構成する
- 省略可: [鍵のサイズとアルゴリズムを構成する] で、リストから署名鍵のサイズとアルゴリズムを選択します。この手順をスキップすると、SHA 256 ダイジェストを使用した RSASSA-PSS の 2048 ビットの鍵が使用されます。署名鍵とアルゴリズムの選択については、鍵アルゴリズムを選択するをご覧ください。
- [証明書を生成] をクリックします。
署名済み証明書をダウンロードする
- 生成された証明書を表示するには、[証明書を表示] をクリックし、[表示] をクリックします。
- 省略可: 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 鍵を使用して証明書のみをリクエストするには、Google Cloud CLI のみを使用できます。
gcloud
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 から証明書を発行する
このセクションでは、CA プール内の特定の CA から証明書を発行する方法について説明します。
Console
Google Cloud コンソールの [Certificate Authority Service] ページに移動します。
[証明書をリクエスト] をクリックします。
リージョンを選択します。 リージョンは、使用する CA プールのリージョンと同じである必要があります。
CA プールを選択します。
CA を選択するには、[この CA プールに含まれる特定の CA を使用する] をクリックして、リストから CA を選択します。
自動生成された鍵を使用して証明書をリクエストするセクションまたは CSR を使用して証明書をリクエストするセクションで行ったのと同様に、他のパラメータを選択します。
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"
Terraform
検証モードで証明書をリクエストする
検証モードで証明書をリクエストすると、署名されていないテスト証明書が作成されます。このテスト証明書は PEM エンコードされておらず、料金は発生しません。証明書はダウンロードできませんが、架空の証明書の説明で、選択したパラメータで署名付き証明書を正常に発行したことを確認できます。
検証モードで証明書をリクエストするには、次の手順を行います。
Console
Google Cloud コンソールの [Certificate Authority Service] ページに移動します。
[証明書をリクエスト] をクリックします。
[署名済み証明書ではなく、仮の証明書の内容を表示する検証モードを使用する] を選択します。
署名付き証明書をリクエストする場合と同じ手順を行います。
次のステップ
- 証明書プロファイルについて学習する。
- 証明書を取り消す方法を学習する。
- 証明書の並べ替えとフィルタリング方法を学習する。
- Google Cloud CLI を使用して証明書を管理する方法を学習する。