如何使用 Ansible 创建自己的 CA 包以导入 FireFox

如何使用 Ansible 创建自己的 CA 包以导入 FireFox

我正在尝试为自己的 CA 创建证书。导入 CA 证书后ca-mydomain.com.crt进入 FireFox 我的网站无法运行,但显示消息

安全连接失败

连接到 myapp.mydomain.com 时发生错误,证书类型未获批准用于应用程序。

错误代码:SEC_ERROR_INADEQUATE_CERT_TYPE

我遵循以下步骤:

  1. 创建我的 CA 密钥、csr 和 crtca-mydomain.com.key ca-mydomain.com.csrca-mydomain.com.crt
  2. 然后为我的网站创建myapp.mydomain.com.key myapp.mydomain.com.csr myapp.mydomain.com.crt

我使用 Ansible 分两步创建这些文件。对于我的 CA:

- community.crypto.openssl_privatekey:
    path: ca-mydomain.com.key

- community.crypto.openssl_csr:
    path: ca-mydomain.com.csr
    privatekey_path: ca-mydomain.com.key
    basic_constraints_critical: true
    basic_constraints:
      - CA:TRUE
      - pathlen:0
    key_usage:
      - digitalSignature
      - cRLSign
      - keyCertSign
    common_name: mydomain.com

- openssl_certificate:
    path: ca-mydomain.com.crt
    csr_path: ca-mydomain.com.csr
    privatekey_path: ca-mydomain.com.key
    provider: selfsigned

然后对于我的网站:

- community.crypto.openssl_privatekey:
    path: myapp.mydomain.com.key

- community.crypto.openssl_csr:
    path: myapp.mydomain.com.csr
    privatekey_path: myapp.mydomain.com.key
    key_usage:
      - digitalSignature
      - keyAgreement
    extended_key_usage:
      - clientAuth
    common_name: myapp.mydomain.com

- community.crypto.x509_certificate:
    path: myapp.mydomain.com.crt
    privatekey_path: myapp.mydomain.com.key
    csr_path: myapp.mydomain.com.csr
    ownca_path: ca-mydomain.com.crt
    ownca_privatekey_path: ca-mydomain.com.key
    provider: "{{ ternary('ownca','selfsigned') }}"

我创建的所有证书都在https://github.com/onknows/ca。创建 CA 证书或捆绑包以供导入 FireFox、Java 密钥库的正确方法是什么?

答案1

TLS 服务器使用的证书必须具有serverAuth扩展密钥用法。


(CA 不需要任何扩展密钥用法 - 扩展可以不存在。但是,如果 CA 证书患有 EKU,那么应该包括“serverAuth”以及它将为其颁发的任何其他 EKU。这是因为某些实现会将 CA 证书上的 EKU 解释为对所有子证书的约束。)

相关内容