SSL握手异常unknown_ca apns java

4

我正在尝试为iPhone实现一个独立的应用程序;我希望为iPhone客户端使用Apple推送通知。 我收到了javax.net.ssl.SSLHandshakeException:Received fatal alert: unknown_ca错误提示。

以下是我的Java代码连接到apns网关:

int port = 2195;
String hostname = "gateway.sandbox.push.apple.com";
char[] passwKey = "password".toCharArray();

KeyStore ts = KeyStore.getInstance("PKCS12");
ts.load(new FileInputStream("/path/to/file/Cert.p12"), passwKey);
KeyManagerFactory tmf = KeyManagerFactory.getInstance("SunX509");
tmf.init(ts, passwKey);

SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(tmf.getKeyManagers(), null, null);
SSLSocketFactory factory = sslContext.getSocketFactory();

SSLSocket socket = (SSLSocket) factory.createSocket(hostname,port); 
String[] suites = socket.getSupportedCipherSuites();
socket.setEnabledCipherSuites(suites);
//start handshake
socket.startHandshake(); 

请帮忙理解 SSL 证书在 Linux 机器上如何安装。
编辑:
现在它对我有用了,我重新创建了 Cert.p12 文件,程序开始工作了。我不知道导致它不起作用的确切原因是什么,但我猜测可能是 Cert.p12 文件损坏了。
感谢大家的帮助。
2个回答

1

unknown_ca:

收到了有效的证书链或部分链,但是证书未被接受,因为无法定位或匹配已知的受信任 CA 证书。此消息始终是致命的。

您可能需要将证书添加到您的 jre 的 cacerts 文件中(通常位于 lib/security 下)。请查看 keytool 的文档以及其 -import 选项获取更多信息。

通过进一步研究 cacerts 文件和 keytool,您可能会找到如何执行此操作的示例。


0

我遇到了同样的问题。

使用“包括所有证书”的方式导入到IE中/导出解决了这个问题。


“all certificates included”是什么意思?这是指某个复选框吗?我找不到它 :( - Goddchen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接