2016-07-25 19 views
1

私は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_usescert_signingを追加する必要が

答えて

2

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", 
    "cert_signing" 
    ] 
} 

参照:https://www.terraform.io/docs/providers/tls/r/self_signed_cert.html#cert_signing

関連する問題