【发布时间】:2012-02-23 09:31:06
【问题描述】:
您好,我正在尝试使用 Java 向我的设备发送推送消息。但是在建立 ssl 连接时我已经遇到了问题。 到目前为止的代码如下:
KeyStore keyStore = KeyStore.getInstance("PKCS12");
InputStream key = getClass().getResourceAsStream("apns-dev-key.p12");
char[] c = key.toString().toCharArray();
keyStore.load(getClass().getResourceAsStream("apns-dev-cert.p12"), c);
KeyManagerFactory keyMgrFactory = KeyManagerFactory.getInstance("SunX509");
keyMgrFactory.init(keyStore, c);
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(keyMgrFactory.getKeyManagers(), null, null);
SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
SSLSocket sslSocket = (SSLSocket) sslSocketFactory.createSocket(host, port);
String[] cipherSuites = sslSocket.getSupportedCipherSuites();
sslSocket.setEnabledCipherSuites(cipherSuites);
sslSocket.startHandshake();
我得到的错误是:
java.io.IOException: failed to decrypt safe contents entry: javax.crypto.BadPaddingException: Given final block not properly padded
我猜apns-dev-key.p12 文件有问题。有什么提示吗?
以上代码摘自:http://undermypalapa.wordpress.com/2009/08/23/apple-push-notification-service-java/
【问题讨论】:
-
好的,我现在开始工作了。问题是我尝试使用 apns-dev-key.p12。但我需要做的就是使用推送证书(p12 文件,包括证书和密钥)并使用我在导出证书时创建的密码。
标签: java ssl apple-push-notifications