Hashicorp Vault PKI 中間リクエストに秘密鍵がありません

Hashicorp Vault PKI 中間リクエストに秘密鍵がありません

PKI構造を設定しようとしましたが、中間CSRをVaultに要求しても秘密鍵が返されません。テラフォームそれを実装しようとしている場所でも、API 経由でもありません。

私は試した:

  1. APIについてhttps://www.vaultproject.io/api/secret/pki/index.html#sample-payload-2

    CSR のみを取得します。

    bash
    curl \
        --header "X-Vault-Token: s.123456789abcdef" \
        --request POST \
        --data @example.json \
        http://vault.example.com:8200/v1/pki/intermediate/generate/internal
    

    そして次の JSON を受け取ります。

    {
      "request_id": "e47966f5-6783-90d6-2d46-71c54ce05749",
      "lease_id": "",
      "renewable": false,
      "lease_duration": 0,
      "data": {
        "csr": "-----BEGIN CERTIFICATE REQUEST-----\nMIICjDCCAXQCAQAwGjEYMBYGA1UEAxMPd3d3LmV4YW1wbGUuY29tMIIBIjANBgkq\nhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzDpyCY0LRTuUFMepJsWiIqUBhzyOMgxZ\nUFuBln77+nHeDEME4sSymkP+QJ9X4Baah7K3K2/v2TwZHHErw22VHEBy9saR4xZw\nkw8o9uhYGeqC9jBaqp2taQUN42IVp0w0Gmo/2uutl8ryJMXb2RfYn1RX/20bZ0ti\nCe0y/FNCW4M/DoUZYLF/8pXnVIdtZZAGJWavtpyxj4tWFSVvV6IKXYXY80iInnY6\nUQ0UZiL+dhbYEymcchEMtTT2C0ggXBIdV/zO9S/WiaQ5cPg3Tpkf4Fv5C+lTaAkQ\nKeLlnm9OcShtnZe/mw0lug7bSOuy5HClYJi/Ibz1YFZU0I7IC2VhWQIDAQABoC0w\nKwYJKoZIhvcNAQkOMR4wHDAaBgNVHREEEzARgg93d3cuZXhhbXBsZS5jb20wDQYJ\nKoZIhvcNAQELBQADggEBAFnGtTa4Yi2S/SLORWr80Q5/co7KXErCOdN0SvbcuNWO\nyYisHCLCUXM0zwqZHxRuwZY7Z8SZIeLkeyc6wuDrqUahlUXMTaU8XUISyPZsCHKV\ngNdSaDBeMx8sxBiQxbOznxHduMwLZZ2dAv6TAcbcXd4HFqhuXcqKYtxRz8la0PS/\nZsDCQoZGeqKozd3jc7a0ya8TKFPrvzkWIr1IbNT8Bg/66S5fmMsn7L80JLsRoXn6\nS6ZY/82OFnLqx2U5i9ayec7JM3I2DkERcJRKF3XnnS59tiN5G7WVPrb4/tPPFNsy\n7S2NTf9F8CsS+alg4CEka6p/r+oNGHb1GATkKVjLiek=\n-----END CERTIFICATE REQUEST-----"
      },
      "wrap_info": null,
      "warnings": null,
      "auth": null
    }
    
  2. テラフォームhttps://www.terraform.io/docs/providers/vault/r/pki_secret_backend_intermediate_cert_request.html

    resource "vault_pki_secret_backend_intermediate_cert_request" "pki_int_request" {
      depends_on = [ "vault_pki_secret_backend_config_ca.pki_root_config" ]
    
      backend = "${vault_mount.pki_root.path}"
    
      type = "internal"
      common_name = "example.com"
    }
    
    resource "local_file" "inter_key" {
        depends_on = [ "vault_pki_secret_backend_intermediate_cert_request.pki_int_request" ]
    
        content  = "${vault_pki_secret_backend_intermediate_cert_request.pki_int_request.private_key}"
        filename = "${path.module}/certs/int_ca.key"
    }
    

空のファイルだけが取得されます。
明らかに何かが欠けているので、アドバイスをいただければ幸いです。

答え1

vaultproject.io の「Generate Intermediate」のサンプル コードと応答は、独自のドキュメントと矛盾していると思います。

「type」パラメータのドキュメントには、秘密鍵を返す場合は「exported」を指定し、Vault で秘密鍵を永久に保護する場合は「internal」を指定する必要があると記載されています。

サンプル API 呼び出しでは「内部」が指定されているようですが、サンプル応答は「内部」ではなく「エクスポート」を期待しているように見えます。

関連情報