- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近发现了 Google 的 Android 云消息传递,我想集成我的应用程序以使用它。我让项目的 Android 端正常工作,并且该应用程序已正确注册到服务器。问题是我的服务器似乎无法对 GCM 服务器进行身份验证,因此无法与它们通信。这就是我的意思:
目前,我的服务器是一个简单的基于 Java 的 SSL 服务器,带有一个 keystore 和一个信任库。信任库包含客户端的 key (即应用程序的 key ),反之亦然,客户端/服务器可以通过 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
当我启动服务器时,我传入信任/ keystore 的名称及其密码并加载它们,以便它们可用于与客户端通信。我怀疑问题是目前信任库只包含客户端的 key ,因此服务器只能与客户端交谈,而不能与其他人交谈。这是正确的吗?如果是,有人知道如何将 GCM 证书添加到信任库或其他内容吗?
非常感谢,非常感谢任何帮助:)
附言我尝试在服务器中加载信任库并且应用程序成功接收到它之前向客户端发送一条消息。
最佳答案
使用 Google Cloud Messaging,您的服务器不会直接与客户端对话。它首先通过“云”部分。因此,将客户端证书放在服务器的信任管理器中是行不通的。
相反,您的服务器必须验证 Google 云消息传递服务器的 SSL 证书。这些由操作系统的默认 CA 列表中已有的证书颁发机构提供支持,因此在添加信任库之前向客户端发送消息就可以正常工作。
关于java - Google GCM 无法为 Java SSL 服务器进行 SSL 握手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12231665/
我是一名优秀的程序员,十分优秀!