自签根证书
openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -days *** -x509 -subj "/OU=*** Root CA/O=***/CN=***" -keyout ca.key -out ca.crt -config ca.cnf
ca.cnf 没有什么特别的就不列了
签发 IP 证书
openssl req -new -subj "/C=CN/ **** /CN=10.21.9.2" -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -nodes -keyout ip.key -out ip.csr
openssl x509 -req -CA ca.crt -CAkey ca.key -extfile <(cat v3_ext.cnf <(printf "subjectAltName=IP:10.21.9.2")) -extensions v3_req -CAcreateserial -days *** -in ip.csr -out ip.crt
v3_ext.cnf
[v3_req]
basicConstraints=CA:FALSE
keyUsage=digitalSignature, nonRepudiation, keyEncipherment
extendedKeyUsage=clientAuth, serverAuth
certificatePolicies=2.23.140.1.2.1
之前在 Linux 上使用上述命令自签了一个根证书,并用该根证书又签了一个 IP 证书部署在 WEB 服务器上. 将自签的根证书导入 Windows 7/10 的信任根证书域后,用浏览器访问这个 IP 的 WEB 服务, 无任何安全提示证书状态都显示正常. 下面将 Windows 下证书基本信息帖出.
![]() |
![]() |
|---|---|
| ROOT CA | IP 证书 |
将这个根证书导入的到 macOS 中 系统 这个域 并更改了信任,ROOT CA 在 macOS 状态如下图: (注: 这里选择全部始终信任的话,证书评估那里会有问题)
![]() |
![]() |
![]() |
|---|---|---|
| 信任状态 | 证书详细 | 证书评估 |
使用 Edge 和 safari 两个浏览器都提示问题, Edge 看不出什么信息(注: macOS 和 Windows 使用的 Edge 浏览器版本都一样),在 safari 错误详细中看到如下提示:
个人猜测问题可能有:
- 根证书和签发证书的加密算法或者是 v3_ext.cnf 中指定的 OID 不支持
- 不能给私有 IP 段签发 IP 证书
- 根证书放的位置不对,但是 macOS 不允许放在根这个类别下面
感觉上面的可能比较小,还是有细节参数或者是配置方面的问题,那么问题出在了哪里,有大佬知道吗?




