Google Cloud CLI を使用して証明書を発行する

このページでは、Google Cloud CLI を使用して認証局(CA)プールを作成し、証明書を発行する方法について説明します。

CA Service を使用すると、インフラストラクチャを管理することなくプライベート CA をデプロイして管理できます。

始める前に

  • Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init
  • Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  • Enable the Certificate Authority Service API:

    gcloud services enable privateca.googleapis.com

  • Make sure that billing is enabled for your Google Cloud project.

  • このクイックスタートの gcloud コマンドで使用するデフォルトのロケーションを構成します。

    gcloud config set privateca/location LOCATION
    

    CA プールや CA などの CA Service のリソースは、単一のGoogle Cloud のロケーションに存在します。これらのリソースを作成した後は変更できません。

CA プールを作成します

認証局(CA)プールは、複数の CA の集合です。CA プールには、ワークロードの停止やダウンタイムなしに信頼チェーンをローテーションする機能があります。

Enterprise ティアで CA プールを作成するには、次のコマンドを実行します。

gcloud privateca pools create POOL_ID --location LOCATION --tier "enterprise"

以下を置き換えます。

  • POOL_ID: CA プールの名前。
  • LOCATION: CA プールのロケーション。ロケーションの完全なリストについては、ロケーションをご覧ください。

すべての CA Service リソースの名前には、使用可能な文字(すべての文字、数字、ハイフン、アンダースコア)のみを含める必要があります。名前の最大長は 63 文字です。

ルート CA を作成する

CA プールは、作成時に空です。CA プールから証明書をリクエストするには、CA プールに CA を追加する必要があります。

ルート CA を作成して、作成した CA プールに追加するには、次のコマンドを実行します。

gcloud privateca roots create CA_ID --pool POOL_ID --location LOCATION --subject "CN=Example Prod Root CA, O=Google"

以下を置き換えます。

  • CA_ID: ルート CA の名前。
  • POOL_ID: CA プールの名前。
  • LOCATION: CA プールのロケーション。ロケーションの完全なリストについては、ロケーションをご覧ください。

CA Service は、ルート CA を作成すると、次のコマンドを返します。

Created Certificate Authority [projects/PROJECT_ID/locations/LOCATION/caPools/POOL_ID/certificateAuthorities/CA_ID]

gcloud CLI のプロンプトが表示されたら y を入力して、ルート CA を有効にします。

ルート CA を含む CA プールが作成されたので、証明書の作成に進みます。

証明書を生成

新しく作成した CA を使用して証明書を作成するには、次の手順を行います。

  1. pip コマンドを使用して Pyca 暗号ライブラリをインストールします。

      pip install --user "cryptography>=2.2.0"
    

    CA Service は、Pyca 暗号ライブラリを使用して、ローカルマシンに新しい非対称鍵ペアを生成して保存します。この鍵が CA Service に送信されることはありません。

  2. Google Cloud SDK で Pyca 暗号ライブラリを使用できるようにするには、サイト パッケージを有効にする必要があります。

    macOS または Linux

    export CLOUDSDK_PYTHON_SITEPACKAGES=1
    

    Windows

    set CLOUDSDK_PYTHON_SITEPACKAGES=1
    
  3. 証明書を作成します。

      gcloud privateca certificates create \
          --issuer-pool POOL_ID \
          --issuer-location ISSUER_LOCATION \
          --subject "CN=Example Prod,O=Google" \
          --generate-key \
          --key-output-file=./key \
          --cert-output-file=./cert.pem
    

    以下を置き換えます。

    • POOL_ID: 作成した CA プールのリソース ID。
    • ISSUER_LOCATION: デジタル証明書を発行した認証局の場所。

    CA Service から次のレスポンスが返されます。

    Created Certificate [projects/PROJECT_ID/locations/LOCATION/caPools/POOL_ID/certificates/CERTIFICATE_ID]
    

クリーンアップ

このクイックスタート用に作成した CA プール、CA、プロジェクトを削除してクリーンアップします。

  1. 証明書を取り消します。

      証明書を取り消すには、次のコマンドを実行します。

       gcloud privateca certificates revoke --certificate CERT_NAME
       --issuer-pool POOL_ID --location 
      LOCATION
        

      次のように置き換えます。

      • CERT_NAME: 取り消す証明書の名前。
      • POOL_ID: 証明書を発行した CA プールの名前。
      • LOCATION: CA プールのロケーション。
  2. CA を削除します。

    CA は、CA が発行したすべての証明書を取り消した場合にのみ削除できます。

    1. CA を無効にします。

      gcloud privateca roots disable CA_ID --pool=POOL_ID --location=LOCATION
      

      以下を置き換えます。

      • CA_ID: CA のリソース ID。
      • POOL_ID: CA プールのリソース ID。
      • LOCATION: CA プールのロケーション。ロケーションの完全なリストについては、ロケーションをご覧ください。
    2. CA を削除します。

      gcloud privateca roots delete CA_ID --pool=POOL_ID --location=LOCATION
      

    CA の状態が Deleted に変わります。CA Service は、削除を開始してから 30 日後に CA を完全に削除します。

  3. CA プールを削除します。

    CA プールを削除できるのは、CA プール内の CA が完全に削除された後のみです。

    gcloud privateca pools delete POOL_ID --location=LOCATION
    
  4. プロジェクトを削除する。

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

次のステップ