我想在Grails中編寫一個服務來發送推送通知來更新存摺通行證。我到了可以測試連接到APN服務器的代碼是否正常工作的地步,但是,我似乎無法使用Java SSLSocket方法建立連接。Passbook APN證書失敗(Java/Groovy)
連接的第一部分工作,我從服務器收到證書並在證書鏈中查找可信證書;然而,之後,出於某種原因,我的客戶端證書/證書鏈沒有發送到服務器,因此連接失敗。
我似乎無法找出爲什麼沒有被髮送的證書,我用下面的代碼來設置密鑰庫:
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,蘋果認證),所以我卡上爲什麼證書在請求時不會被髮送。任何幫助,爲什麼它不發送證書信息將非常感激!
編輯:另外,如果有人張貼正從一個或.p12用於簽署通行證或簡單地從iOS的開發門戶網站下載存摺證書,這是已知的工作SSL證書的方法,然後我可能會從中反思,找出我做錯了什麼。