Apple APNS和“Entrust Secure CA root certificate”?

时间:2014-06-07 23:28:17

标签: java apple-push-notifications certificate

我正在尝试向iOS设备发送推送通知 我已经为APNS创建了一个开发人员证书,并将其与应用程序标识符绑定在一起。

然后我继续使用Pushy(https://github.com/relayrides/pushy)建立与APNS服务器的连接:

final PushManagerFactory<SimpleApnsPushNotification> pushManagerFactory =
        new PushManagerFactory<SimpleApnsPushNotification>(
                ApnsEnvironment.getSandboxEnvironment(),
                PushManagerFactory.createDefaultSSLContext( DEV_CERT_P12__PATH, DEV_CERT_P12__PASSWORD )
                );

final PushManager<SimpleApnsPushNotification> pushManager = pushManagerFactory.buildPushManager();

pushManager.registerFailedConnectionListener(new MyFailedConnectionListener());

pushManager.start();

...

public static class MyFailedConnectionListener implements FailedConnectionListener<SimpleApnsPushNotification> {

    public void handleFailedConnection(
            final PushManager<? extends SimpleApnsPushNotification> pushManager,
            final Throwable cause) {

        System.out.println("ERROR  -  "+ cause.toString());

        if (cause instanceof SSLHandshakeException) {

            // This is probably a permanent failure, and we should shut down
            // the PushManager.
        }
    }
}

我收到此错误:javax.net.ssl.SSLException: Received fatal alert: certificate_unknown

我正在使用我用我在developer.apple.com上与应用程序绑定的证书的私钥创建的P12文件 enter image description here



经过多次搜索,我已经设法获得了一些信息,说明为什么我无法在Apple Doc中使用这个东西:

  

注意:要与APN建立TLS会话,请使用Entrust Secure CA根   证书必须安装在提供商的服务器上。如果是服务器   在运行OS X时,此根证书已存在于钥匙串中。上   在其他系统中,证书可能不可用。您可以   从Entrust SSL证书网站下载此证书。

然而,我仍然不知道我想做什么 我真的很感激这里有一些更具体的指导。

谢谢。

1 个答案:

答案 0 :(得分:8)

我找到了解决方案。作为向我提出建议的人,我不知道它为什么解决了这个问题。

使用OpenSSL,我将P12文件(我从Keychain Access获得)转换为PEM,从PEM转换回P12 ...

  1. 将从app的APN(在developer.apple.com上)下载的CER文件转换为PEM
    openssl x509 -in aps_development.cer -inform DER -out aps_development.pem -outform PEM

  2. 将使用Keychain Access创建的P12文件转换为PEM
    openssl pkcs12 -nocerts -in Certificates.p12 -out Certificates.pem

  3. 创建一个新的GOOD P12档案openssl pkcs12 -export -inkey Certificates.pem -in aps_development.pem -out GOOD_Certificates.p12
  4. 有关详细信息:http://help.adobe.com/en_US/as3/iphone/WS144092a96ffef7cc-371badff126abc17b1f-7fff.html