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