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

このページでは、Google Cloud CLI を使用して Certificate Authority Service で証明書を生成または発行する方法について説明します。

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

始める前に

  • Google Cloud CLI をインストールします。 インストール後、 初期化するには、次のコマンドを実行して Google Cloud CLI を初期化します。

    gcloud init

    外部 ID プロバイダ(IdP)を使用している場合は、まず フェデレーション ID を使用して gcloud CLI にログインする必要があります

  • プロジェクトを作成または選択します Google Cloud

    プロジェクトを選択または作成するために必要なロール

    • プロジェクトを選択する: プロジェクトの選択には特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
    • プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール (roles/resourcemanager.projectCreator)が必要です。これには resourcemanager.projects.create 権限が含まれています。ロールを付与する方法について学習する
    • プロジェクトを作成する: Google Cloud

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Google Cloud プロジェクトの名前に置き換えます。

    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、 Google Cloud プロジェクトの名前に置き換えます。

  • Certificate Authority Service API を有効にします。

    API を有効にするために必要なロール

    API を有効にするには、 権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。serviceusage.services.enableロールを付与する方法について学習する

    gcloud services enable privateca.googleapis.com

  • プロジェクトで課金が有効になっていることを確認します Google Cloud 。

  • このクイックスタートの 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 プールのロケーション。ロケーションの完全な リストについては、ロケーションをご覧ください。

リソース名には、英数字、ハイフン(-)、アンダースコア(_)を使用できます。長さは 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 プールを作成するには、次のコマンドを実行します。

    gcloud privateca pools create SUBORDINATE_POOL_ID
        --location LOCATION
        --tier TIER

以下を置き換えます。

  • SUBORDINATE_POOL_ID: 下位 CA プールの ID。
  • LOCATION: 下位 CA プールのロケーション。 ロケーションの完全なリストについては、ロケーションをご覧ください。
  • TIER:下位 CA ティア(devops または enterprise)。

省略可: に保存されているルート CA によって署名された下位 CA を作成する Google Cloud

前の手順で作成した下位 CA プールに下位 CA を作成するには、次のコマンドを実行します。

    gcloud privateca subordinates create SUBORDINATE_CA_ID \
        --location=LOCATION \
        --pool=SUBORDINATE_POOL_ID \
        --issuer-pool=POOL_ID \
        --issuer-location=ISSUER_LOCATION \
        --from-ca=EXISTING_CA_ID \
        --kms-key-version projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KEY_RING/cryptoKeys/KEY/cryptoKeyVersions/KEY_VERSION

以下を置き換えます。

  • SUBORDINATE_CA_ID: 下位 CA の ID。
  • LOCATION: 下位 CA のロケーション。ロケーションの完全なリストについては、ロケーションをご覧ください。
  • SUBORDINATE_POOL_ID: 前のセクションで作成した下位 CA プールの ID。
  • POOL_ID: 親 CA プールの ID。
  • ISSUER_LOCATION: 証明書のロケーション。
  • EXISTING_CA_ID: ソース CA の ID。
  • PROJECT_ID: プロジェクトの ID。
  • LOCATION_ID: キーリングのロケーション。
  • KEY_RING:鍵が配置されているキーリングの名前。
  • KEY:鍵の名前。
  • KEY_VERSION: 鍵のバージョン。

下位 CA が作成されると、次のステートメントが返されます。

Created Certificate Authority [projects/my-project-pki/locations/us-west1/caPools/SUBORDINATE_POOL_ID/certificateAuthorities/SUBORDINATE_CA_ID].

gcloud CLI でプロンプトが表示されたら y と入力して、下位 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. プロジェクトを削除する。

    プロジェクトを削除する: Google Cloud

    gcloud projects delete PROJECT_ID

次のステップ