java - android gcm 服务器中的 ssl 握手异常

标签 java android ssl google-cloud-messaging

嗨, friend 们,我是 android 的新手。我正在尝试创建 gcm 服务器。我的代码是

System.setProperty("javax.net.ssl.trustStore","/usr/bin/keystore.jks");
String id = "cliend id";
String msg = "Test";
Sender sender = new Sender(Api key);
Message message = new Message.Builder()
        .addData("message", "this is the message")
        .addData("other-parameter", "some value")
        .build();
Result result;
result = sender.sendNoRetry(message, id);

我创建了 keystore ,但仍然出现错误,如:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find请求目标的有效认证路径。

我无法解决它。

最佳答案

您需要将 App2 的证书添加到所用 JVM 的 keystore 文件中,该文件位于 %JAVA_HOME%\lib\security\cacerts。

首先,您可以通过运行以下命令检查您的证书是否已在 keystore 中:keytool -list -keystore "%JAVA_HOME%/jre/lib/security/cacerts"(您不需要提供密码)

如果您的证书丢失,您可以通过使用浏览器下载并使用以下命令将其添加到 keystore 来获取它:

keytool -import -noprompt -trustcacerts -alias -file -keystore -storepass

导入后您可以再次运行第一个命令来检查您的证书是否已添加。

可以找到Sun/Oracle 信息here .

希望这对您有所帮助!玩得开心!

关于java - android gcm 服务器中的 ssl 握手异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28647660/

相关文章:

java - 如何在启用换行的情况下获取 JTextArea 中的可见行数?

java - 缓存映射器输出

java - 在java中计算特定字符,但我的程序只读取单词中的第一个字符

4 :3 tablets 上的 Android 相机预览纵横比

http - 具有自定义用户域的 SSL

ruby - Rest-Client gem RoR,获取 SSL 错误版本错误

java - Spring JMX - 导出键值对映射

android - 在 Android 中多次使用 getResources() 的更好方法是什么

android - ActivityManager.isUserAMonkey() 方法有什么用?

apache - 错误代码 : SSL_ERROR_BAD_CERT_DOMAIN even when using the domain that is mentioned in the error message