服务器的trustStore不信任客户端的证书。检查它包含的内容,以及您真正使用的是trustStore。
弄清楚了。正如kroot所说,问题是服务器无法验证GCM服务器,因为它们的证书不在其信任库中(我使用自己的信任存储区作为系统的信任存储区)。所以我通过简单地从Java安全文件夹复制cacerts文件,在那里添加Android应用程序的自定义客户端证书,并使用该文件作为我的信任存储来改变它,因为它已经拥有系统的默认信任证书。很简单,但我花了半天才弄明白。
使用Google Cloud Messaging,您的服务器不会直接与客户端通信。它首先通过“云”部分。因此,将客户端证书放在服务器的信任管理器中是行不通的。
相反,您的服务器必须验证Google Cloud Messaging服务器的SSL证书。这些已由操作系统的默认CA列表中的证书颁发机构支持,因此在添加信任存储之前向客户端发送消息将正常工作。
我创建了一个独立的java程序,它充当“服务器”,可以将消息推送到GCM服务器,而GCM服务器又可以向我的手机应用程序发送消息。
我不必在我的jre \ lib \ security \ cacerts文件中安装任何证书,因为随附的受信任条目足以连接到GCM服务器。
唯一的依赖是以下
<dependency> <groupId>com.google</groupId> <artifactId>gcm-server</artifactId> <version>1.0.1</version> </dependency> <dependency> <groupId>com.googlecode.json-simple</groupId> <artifactId>json-simple</artifactId> <version>1.1.1</version> </dependency>