我正在尝试为我自己的 CA 创建证书。将 CA 证书ca-mydomain.com.crt导入 FireFox 后,我的网站无法运行,但显示消息
安全连接失败
连接到 myapp.mydomain.com 时出错 证书类型未获批准申请。
错误代码:SEC_ERROR_INADEQUATE_CERT_TYPE
我按照以下步骤操作:
- 为我的 CA 密钥、csr 和 crt 创建ca-mydomain.com.key ca-mydomain.com.csr和ca-mydomain.com.crt
- 然后为我的网站创建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中。在 FireFox、Java 密钥库中创建用于导入的 CA 证书或捆绑包的正确方法是什么?
TLS 服务器使用的证书必须具有
serverAuth
扩展密钥用法。(CA 不需要任何扩展密钥用法——扩展可以不存在。但是,如果 CA 证书确实有 EKU,那么它还应该包括“serverAuth”以及它将为其颁发的任何其他 EKU。这是因为一些实现会将 CA 证书上的 EKU 解释为对所有子证书的约束。)