为什么我的服务器证书被拒绝了?

时间:2014-05-15 21:34:19

标签: ios ssl keychain secure-transport

我正在尝试使用TLS 1.2将我的应用程序连接到服务器。服务器正在使用已由设备上已安装的自签名CA证书签名的证书(我通过电子邮件将CA证书发送给自己,点击它。现在它显示在“设置” - >“常规” - >“配置文件”下)。这是以前在我的应用程序中工作,但我们已经更改了我们正在使用的CA证书,所以我也更新了服务器的证书。现在我遇到了SSL失败。

我在客户端调用errSSLXCertChainInvalid时看到的错误是SSLHandshake。据我所知,服务器证书应该是有效的。 openssl verify -CAfile ca-cert.pem server-cert.pem返回OK,该ca-cert.pem与我在设备上安装的CA证书相同。

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:4)

苹果documentation中有关于此错误的一些信息:

  

errSSLXCertChainInvalid - 对等体的证书链无效;例如,链中的签名验证失败,或者没有找到证书。

如果您使用SSLSetPeerDomainName

  

您可以使用此功能验证对等证书中的公共名称字段。如果您调用此函数并且证书中的公用名与您在peerName参数中指定的值不匹配,则握手将失败并返回errSSLXCertChainInvalid。

我建议卸载您的设备配置文件,然后创建一个新配置文件。

此外,最好检查一下是否可以访问服务器而不会出现Web浏览器的错误。这将显示证书是否存在问题,或者仅显示iOS设备上的配置文件。