【问题标题】:Passbook APN certificate failing (Java/Groovy)Passbook APN 证书失败 (Java/Groovy)
【发布时间】:2013-04-10 20:53:50
【问题描述】:

我正在尝试在 Grails 中编写一个服务来发送推送通知以更新存折通行证。我已经到了可以测试连接到 APN 服务器的代码是否正常工作的地步,但是,我似乎无法使用 Java SSLSocket 方法建立连接。

连接的第一部分工作,我从服务器接收证书并在证书链中找到一个受信任的证书;但是,在那之后,由于某种原因,我的客户端证书/证书链从未发送到服务器,因此连接失败。

我似乎无法弄清楚为什么没有发送证书,我使用以下代码设置密钥库:

void setupSSLPropertiesForConnection() {
    System.setProperty("javax.net.ssl.keyStore", "superSecretFile.p12")
    System.setProperty("javax.net.ssl.keyStorePassword", "superSecretPassword")
    System.setProperty("javax.net.ssl.keyStoreType", "PKCS12")

    System.setProperty("javax.net.ssl.trustStore", "trustStoreFile")
    System.setProperty("javax.net.ssl.trustStorePassword", "trustStorePassword")
    System.setProperty("javax.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol")
}

然后尝试连接到 APN 服务器:

setupSSLPropertiesForConnection()
SSLSocketFactory factory = (SSLSocketFactory)SSLSocketFactory.getDefault()
SSLSocket socket = (SSLSocket)factory.createSocket("gateway.push.apple.com", 2195)

我使用 Java 的 keytool 查看了 PKCS12 文件,只有一个别名,其中包含我的存折证书(证书、WWDR、Apple 证书)的整个证书链,所以我不知道为什么证书是'在被请求时不被发送。任何关于它为什么不发送证书信息的帮助将不胜感激!

编辑:另外,如果有人要发布从用于签署通行证的 .p12 或仅从从 iOS 开发门户下载的存折证书获取 SSL 证书的方法,这是已知的工作,然后我也许可以从那倒过来找出我做错了什么。

【问题讨论】:

    标签: java groovy notifications push passbook


    【解决方案1】:

    现在我觉得很傻,显然我的客户端 PKCS12 文件和信任库文件的文件名都是错误的,但是在使用 System.setProperty 设置密钥库和信任库时,如果文件不能被设置,它不会抛出任何错误找到或打开。

    我尝试更改我的代码,以便从使用 TrustManagerFactory 和 KeyManagerFactory 创建的 SSLContext 创建 SSLSocketFactory,但当我尝试这样做时,它会抛出 FileNotFoundError。现在它似乎至少工作了。叹息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-15
      • 1970-01-01
      • 2022-01-15
      • 2018-03-15
      • 2015-11-13
      • 2021-11-26
      • 2018-09-10
      • 1970-01-01
      相关资源
      最近更新 更多