由于需要支持多域名、泛域名的证书方便调试,自签名证书成为最佳选择。但是rtz使用openssl生成的一个自签名证书在Windows下的Chrome可以正常使用,而在IOS下的Safari提示不被信任。

造成这个问题的原因在于新版IOS对SSL证书有额外的要求

  • 密钥长度必须大于等于2048位
  • 哈希算法不得为SHA-1
  • 必须使用主题备用名称扩展,通用名称不再受信任
  • 扩展密钥用法必须包含服务器身份验证(id-kp-serverAuth OID)
  • TLS 服务器证书的有效期必须为 825 天或更短

由于是调试使用,rtz的自签名证书选择了10年有效期,不满足最后一条要求,所以即使在设置中信任了根证书,该自签名证书仍然不被IOS信任。