存折APN证书失败(Java/Groovy)

存折APN证书失败(Java/Groovy),java,groovy,notifications,push,passbook,Java,Groovy,Notifications,Push,Passbook,我正试图在Grails中编写一个服务来发送推送通知以更新存折通行证。我可以测试连接到APN服务器的代码是否正常工作,但是,我似乎无法使用JavaSSLSocket方法建立连接 连接的第一部分工作,我从服务器接收证书,并在证书链中找到一个受信任的证书;但是,此后,由于某种原因,我的客户端证书/证书链从未发送到服务器,因此连接失败 我似乎不明白为什么不发送证书,我使用以下代码设置密钥库: void setupSSLPropertiesForConnection() { System.setP

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

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

我似乎不明白为什么不发送证书,我使用以下代码设置密钥库:

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文件,其中只有一个别名,它包含我的存折证书(certificate、WWDR、Apple certificate)的整个证书链,因此我一直无法理解为什么在请求时不发送证书。任何关于为什么不发送证书信息的帮助都将不胜感激


编辑:此外,如果有人发布了一种方法,从用于签署通行证的.p12或从iOS开发门户下载的存折证书中获取SSL证书,这是已知的有效方法,那么我可能可以从中反向工作,找出我做错了什么。

现在我觉得自己很傻,显然,我的客户端PKCS12文件和信任存储文件的文件名都是错误的,但在使用System.setProperty设置密钥库和信任存储时,如果找不到或无法打开文件,则不会引发任何错误

我尝试更改代码,以便从使用TrustManagerFactory和KeyManagerFactory创建的SSLContext创建SSLSocketFactory,当我尝试更改代码时,它抛出FileNotFoundError。现在它似乎至少起作用了。唉