私はTerraformを使用して、テスト/開発環境で内部的に使用する自己署名証明書を作成しようとしています。Terraform自己署名証明書Openssl検証に失敗しました
私はまず、CA秘密鍵、自己署名証明書を作成します。
次に、HTTPSを有効にする内部ドメイン名の証明書署名要求と秘密鍵を作成します。
次に、私は証明書に署名します。私が使用しているTerraformマニフェストはすべてここにあります:
resource "tls_private_key" "ca" {
algorithm = "ECDSA"
ecdsa_curve = "P384"
}
resource "tls_self_signed_cert" "ca" {
key_algorithm = "${tls_private_key.ca.algorithm}"
private_key_pem = "${tls_private_key.ca.private_key_pem}"
subject {
common_name = "Example CA"
organization = "Example, Ltd"
country = "GB"
}
validity_period_hours = 43800
is_ca_certificate = true
allowed_uses = [
"key_encipherment",
"digital_signature",
"server_auth",
"client_auth",
]
}
resource "tls_private_key" "registry" {
algorithm = "ECDSA"
ecdsa_curve = "P384"
}
resource "tls_cert_request" "registry" {
key_algorithm = "${tls_private_key.registry.algorithm}"
private_key_pem = "${tls_private_key.registry.private_key_pem}"
subject {
common_name = "registry.test.example.com"
organization = "Example, Ltd"
country = "GB"
}
dns_names = ["registry.test.example.com"]
}
resource "tls_locally_signed_cert" "registry" {
cert_request_pem = "${tls_cert_request.registry.cert_request_pem}"
ca_key_algorithm = "${tls_private_key.ca.algorithm}"
ca_private_key_pem = "${tls_private_key.ca.private_key_pem}"
ca_cert_pem = "${tls_self_signed_cert.ca.cert_pem}"
validity_period_hours = 43800
allowed_uses = [
"key_encipherment",
"digital_signature",
"server_auth",
"client_auth",
]
}
私はTerraformマニフェストを実行します。次に、生成された証明書を状態ファイルから抽出し、ファイルに保存しました。
私は、OpenSSLとの最後の証明書を検証するが、エラーを取得しようとしました:
$ openssl verify -CAfile ca-cert.pem registry.pem
registry.pem: C = GB, ST = , L = , postalCode = , O = "Example, Ltd", OU = , CN = registry.example.com
error 20 at 0 depth lookup:unable to get local issuer certificate
任意のアイデアを、問題が何でありますか?私はこれを理解しようと多くの時間を費やしました。
私は基本的に私のテスト/ dev環境でプライベートDockerレジストリにHTTPSを有効にするためにこれを使いたいと思います。あなたがtls_private_key.ca.allowed_uses
にcert_signing
を追加する必要が