[英]ssl handshake exception in android gcm server
嗨,朋友,我是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);
我創建了密鑰庫,但仍然出現類似以下錯誤: 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.
我無法解決。
您需要將App2的證書添加到位於%JAVA_HOME%\\ lib \\ security \\ cacerts的已使用JVM的密鑰庫文件中。
首先,您可以通過運行以下命令來檢查證書是否已存在於密鑰庫中:keytool -list -keystore“%JAVA_HOME%/ jre / lib / security / cacerts”(您無需提供密碼)
如果缺少證書,則可以通過使用瀏覽器下載證書並將其添加到密鑰庫中,使用以下命令:
keytool-導入-無提示-trustcacerts-別名-文件-keystore -storepass
導入后,您可以再次運行第一個命令以檢查是否已添加證書。
可在此處找到Sun / Oracle信息。
希望這對您有所幫助! 玩得開心!
禁用SSL。 將此添加到您的代碼中。
TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
}
};
// Install the all-trusting trust manager
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
// Create all-trusting host name verifier
HostnameVerifier allHostsValid = new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.