macOS 导入自签根证书的相关问题

2023-07-12 23:09:30 +08:00
 ac169

自签根证书

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 错误详细中看到如下提示:

个人猜测问题可能有:

  1. 根证书和签发证书的加密算法或者是 v3_ext.cnf 中指定的 OID 不支持
  2. 不能给私有 IP 段签发 IP 证书
  3. 根证书放的位置不对,但是 macOS 不允许放在根这个类别下面

感觉上面的可能比较小,还是有细节参数或者是配置方面的问题,那么问题出在了哪里,有大佬知道吗?

598 次点击
所在节点    macOS
9 条回复
vcn8yjOogEL
2023-07-13 11:28:55 +08:00
ac169
2023-07-13 12:33:24 +08:00
@vcn8yjOogEL

不清晰吗? 免费图床看大图需要点进去.

这个参考链接是什么意思, 是说根证书不能直接签发 IP 证书,还是说即使根证书直接签发的 IP 证书也需要导入证书链还是什么意思.
ac169
2023-07-13 12:39:49 +08:00
最新进展是 使用根证书签发了一个 Edge 描述文件 提示验证成功. 所以我想根证书及导入操作应该是没有问题的. 问题还是出在签发的 IP 证书参数细节上.

Edge 描述文件 效果图
<img src="https://i.ibb.co/RP88zRM/edge.jpg" alt="edge" border="0">
vcn8yjOogEL
2023-07-13 12:45:22 +08:00
@ac169 #2 一些浏览器要求提供打包证书,不能只给网站证书(格式就是拼接,用 cat 就行)

点进去也一样,只有缩略图
ac169
2023-07-13 13:43:19 +08:00
@vcn8yjOogEL

不对啊, windows 和 macOS 我都用 Edge (并且还是同版本) 浏览器来访问过! windows 没有问题, 而 macOS 上 edge 和 safari 访问都有提示, 只是 在 safari 错误有更详细所以我就截图了 safari 的结果! 有没有可能是系统的区别?

要提供打包证书这个问题, 可以试试重新生成一下, 再看

至于图的问题我也无能为力,毕竟现在免费的图床也不好找.
vcn8yjOogEL
2023-07-13 13:56:21 +08:00
@ac169 #5 你可以用 imgur ,谷歌相册也提供图床服务

又查了下,你可以看看这个 https://support.apple.com/en-us/HT210176
ac169
2023-07-13 14:14:05 +08:00
@vcn8yjOogEL 谢谢, 我都参考参考.
imgur 这个以前也用 这两次用来都失败! 之后 我再试试
ac169
2023-07-13 14:55:35 +08:00
https://support.apple.com/en-us/HT210176

参考上面的内容

证书:

签名算法: X9.62 ECDSA 签名与 SHA-256
扩展秘钥用法 EKU: TLS WWW 客户端身份验证 (OID.1.3.6.1.5.5.7.3.2) / TLS WWW 服务器身份验证 (OID.1.3.6.1.5.5.7.3.1)
使用着备用名称: IP Address=10.21.9.2

上面这些都没有大问题, 唯一不符合的就是下面这段话

" TLS server certificates must have a validity period of 825 days or fewer (as expressed in the NotBefore and NotAfter fields of the certificate). "

我的证书签发为 1200 多天
ac169
2023-07-13 19:24:19 +08:00
@vcn8yjOogEL 问题找到了, 就是 #8 中说的 证书时间太长的问题. 谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/956297

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX