V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ac169
V2EX  ›  macOS

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

  •  
  •   ac169 · 2023-07-12 23:09:30 +08:00 · 636 次点击
    这是一个创建于 503 天前的主题,其中的信息可能已经有所发展或是发生改变。

    自签根证书

    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 证书
    ROOT CA IP 证书

    将这个根证书导入的到 macOS 中 系统 这个域 并更改了信任,ROOT CA 在 macOS 状态如下图: (注: 这里选择全部始终信任的话,证书评估那里会有问题)

    信任状态 证书详细 证书评估
    信任状态 证书详细 证书评估

    使用 Edge 和 safari 两个浏览器都提示问题, Edge 看不出什么信息(注: macOS 和 Windows 使用的 Edge 浏览器版本都一样),在 safari 错误详细中看到如下提示:

    sa

    个人猜测问题可能有:

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

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

    vcn8yjOogEL
        1
    vcn8yjOogEL  
       2023-07-13 11:28:55 +08:00 via Android
    ac169
        2
    ac169  
    OP
       2023-07-13 12:33:24 +08:00
    @vcn8yjOogEL

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

    这个参考链接是什么意思, 是说根证书不能直接签发 IP 证书,还是说即使根证书直接签发的 IP 证书也需要导入证书链还是什么意思.
    ac169
        3
    ac169  
    OP
       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
        4
    vcn8yjOogEL  
       2023-07-13 12:45:22 +08:00 via Android
    @ac169 #2 一些浏览器要求提供打包证书,不能只给网站证书(格式就是拼接,用 cat 就行)

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

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

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

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

    又查了下,你可以看看这个 https://support.apple.com/en-us/HT210176
    ac169
        7
    ac169  
    OP
       2023-07-13 14:14:05 +08:00
    @vcn8yjOogEL 谢谢, 我都参考参考.
    imgur 这个以前也用 这两次用来都失败! 之后 我再试试
    ac169
        8
    ac169  
    OP
       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
        9
    ac169  
    OP
       2023-07-13 19:24:19 +08:00
    @vcn8yjOogEL 问题找到了, 就是 #8 中说的 证书时间太长的问题. 谢谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4186 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:17 · PVG 18:17 · LAX 02:17 · JFK 05:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.