4

我正在尝试为 iphone 实现一个独立的应用程序;我希望为 iphone 客户端使用 Apple 推送通知。我收到 javax.net.ssl.SSLHandshakeException: Received fatal alert: unknown_ca 以下是我连接到 apns 网关的 Java 代码:

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(); 

请帮助我了解什么以及如何在我的 Linux 机器上安装 ssl 证书。

编辑 :

它现在对我有用,我重新创建了 Cert.p12,程序开始工作。我不知道不工作的确切原因是什么,但我想这将是损坏的 Cert.p12 文件。

谢谢大家的帮助。

4

2 回答 2

1

未知_ca:

收到有效的证书链或部分链,但由于无法找到 CA 证书或无法与已知的受信任 CA 匹配,该证书未被接受。此消息总是致命的。

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

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

于 2009-08-06T15:08:11.077 回答
0

有同样的问题。

使用“包含所有证书”导入到 IE/export 解决了它。

于 2009-12-18T11:06:35.807 回答