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:
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 }
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.