嗨, 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/