Я пытаюсь настроить некоторую структуру PKI, но когда я запрашиваю промежуточный CSR из хранилища, закрытый ключ не отправляется обратно. Ни вТерраформироватьгде я пытаюсь это реализовать, ни через API.
Я пытался:
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 }
Терраформировать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», если вы хотите, чтобы был возвращен закрытый ключ, и «internal», если вы хотите, чтобы Vault навсегда защитил закрытый ключ.
В их примере вызова API, похоже, указано «внутренний», но их пример ответа выглядит так, как я ожидал бы для «экспортированного», а не «внутреннего».