Hashicorp Vault PKI Zwischenanforderung: Privater Schlüssel fehlt

Hashicorp Vault PKI Zwischenanforderung: Privater Schlüssel fehlt

Ich versuche, eine PKI-Struktur einzurichten, aber wenn ich eine Zwischen-CSR vom Tresor anfordere, wird kein privater Schlüssel zurückgesendet. Weder inTerraformwo ich versuche es zu implementieren, noch über die API.

Ich habe es versucht:

  1. Die APIhttps://www.vaultproject.io/api/secret/pki/index.html#sample-payload-2

    und erhalten Sie nur den CSR:

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

    Und erhalten Sie den folgenden 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. Terraformhttps://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"
    }
    

Wobei ich nur eine leere Datei bekomme.
Offensichtlich übersehe ich etwas und bin für jeden Rat dankbar.

Antwort1

Ich denke, dass der Beispielcode und die Antwort von vaultproject.io für „Zwischenprodukt generieren“ im Widerspruch zur eigenen Dokumentation stehen.

In der Dokumentation des Parameters „Typ“ heißt es, dass Sie „exportiert“ angeben müssen, wenn der private Schlüssel zurückgegeben werden soll, und „intern“, wenn Vault den privaten Schlüssel dauerhaft schützen soll.

Ihr Beispiel-API-Aufruf scheint „intern“ anzugeben, aber ihre Beispielantwort sieht so aus, wie ich es für „exportiert“ und nicht „intern“ erwarten würde.

verwandte Informationen