我最近发现了适用于 Android 的 Google Cloud Messaging,我想集成我的应用程序以使用它。我让项目的 Android 端正常工作,并且应用程序已正确注册到服务器。问题是我的服务器似乎无法对 GCM 服务器进行身份验证,因此它可以与它们对话。这就是我的意思:
目前,我的服务器是一个简单的基于 Java 的 SSL 服务器,带有一个密钥库和一个信任库。信任库包含客户端的密钥(即应用程序的密钥),反之亦然,客户端/服务器可以通过 SSL 相互通信而不会出现任何问题。我用来向应用程序发送消息的代码是这样的:
Sender sender = new Sender( "API_KEY" );
Message message = new Message.Builder().addData( "message", description ).build();
Result result = sender.send( message, ID, 1 );
它给了我以下例外:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
当我启动我的服务器时,我传入信任/密钥库的名称及其密码并加载它们,以便它们可以用于与客户端对话。我怀疑问题在于当前信任库仅包含客户端的密钥,因此服务器只能与客户端交谈,而不能与其他人交谈。这是正确的吗,如果是,任何人都知道如何将 GCM 证书添加到信任库或其他东西?
非常感谢,非常感谢任何帮助:)
PS我尝试在服务器中加载信任库之前向客户端发送一条消息,并且应用程序成功接收到它。