1

运行代码时

openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert ECert.pem -key EKey.pem

我得到错误

5155:error:14094416:SSL routines:SSL3_READ_BYTES:sslv3 alert certificate unknown:/SourceCache/OpenSSL098/OpenSSL098-44/src/ssl/s3_pkt.c:1102:SSL alert number 46
5155:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:/SourceCache/OpenSSL098/OpenSSL098-44/src/ssl/s23_lib.c:182:

我试图重新开始并获得证书,我试图再次获得私钥,但如果有人能给我建议如何解决这个问题,那就太好了。

4

2 回答 2

1

警报 46 是certificate_unknown(来自RFC 5246,第 7.2 节)。它的意思是:

在处理证书时出现了其他一些(未指定)问题,使其不可接受。

您提供的客户端凭据/证书被 Apple 拒绝。

另请参阅信息安全堆栈交换上的SSL 相互身份验证失败。


如何解决这个问题会很棒。

看起来您生成了自己的凭据。您应该提供 Apple 接受的凭据。

我认为 Apple 开发人员计划的目标之一是为您提供可接受的身份(其他包括经常性收入流)。根据开发者计划,Apple 将验证签名请求并为您颁发此类事情的证书。

如果您想知道,我认为在这种情况下您无法避免使用 Apple 开发人员计划。(对于它的价值,我通常不同意开发者计划的要求,并每年向我收取 200 美元来使用我的 iOS 设备和 MacBook)。

于 2015-04-14T22:24:51.783 回答
0

您可能需要添加 -verbose。

这首先告诉您的是,签署了签署了 gateway.sandbox.push.apple.com 的 CA 的 CA 的根 CA 不在默认的 openSSL 包中。

在上述情况下,该证书适用于:

i:/O=Entrust.net/OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/OU=(c) 1999 Entrust.net Limited/CN=Entrust.net Certification Authority (2048)

您可以从http://www.entrust.net/knowledge-base/technote.cfm?tn=8412获取,并可以使用 -CAfile* 添加到上述命令。

一旦这样做,您应该能够建立正确的连接并至少在服务器证书上获得 OK:

 Verify return code: 0 (ok)

德。

*: 你也可以作弊 - 只需添加 -showcert; 它为您提供服务器的证书;将其剪切并粘贴到 server-cert.pem 中并添加“-CAfile server-cert.pem”,openssl 不会在树上进一步验证它。

于 2012-07-09T16:38:25.840 回答