2

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

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

有任何想法吗?谢谢!

4

1 回答 1

4

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

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

如果你使用SSLSetPeerDomainName

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

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

此外,检查您是否可以从 Web 浏览器无错误地访问服务器可能是一个好主意。这将显示证书是否有问题,或者只是您的 iOS 设备上的配置文件有问题。

于 2014-05-15T21:54:53.033 回答