【问题标题】:SSLHandshakeException unknown_ca apns javaSSLHandshakeException unknown_ca apns java
【发布时间】:2010-11-17 00:29:18
【问题描述】:

我正在尝试为 iphone 实现一个独立的应用程序;我希望为 iphone 客户端使用 Apple 推送通知。 我收到 javax.net.ssl.SSLHandshakeException:收到致命警报: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 文件损坏。

感谢大家的帮助。

【问题讨论】:

    标签: java iphone push-notification sslhandshakeexception


    【解决方案1】:

    有同样的问题。

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

    【讨论】:

    • “包括所有证书”是什么意思?这是某个地方的某个复选框吗?找不到:(
    【解决方案2】:

    unknown_ca:

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-04-09
      • 2019-07-06
      • 2011-10-02
      • 2014-01-26
      • 2021-11-15
      • 2015-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多