我正在尝试通过 Google Cloud Message 服务器向 Android 设备发送推送通知。
我们用来执行此操作的 URL 是:
https://android.googleapis.com/gcm/send
在我们的企业应用程序中,我们不使用默认的 CA 机构,并且出于安全原因,我们在由 SSLContext 属性加载的信任库文件中手动添加我们信任的每个实体。 我想将 GCM 证书添加到我们的信任库。
我不知道如何从该 URL 获取证书。似乎 Chrome/Firefox 导出方式不起作用,因为页面重定向到另一个非 SSL 页面。
有人有解决方案吗?
最佳答案
我已经能够通过以下 Java 代码保存证书:
public void testConnectionTo(String aURL) throws Exception {
URL destinationURL = new URL(aURL);
HttpsURLConnection conn = (HttpsURLConnection) destinationURL.openConnection();
conn.connect();
Certificate[] certs = conn.getServerCertificates();
System.out.println("nb = " + certs.length);
int i = 1;
for (Certificate cert : certs) {
System.out.println("");
System.out.println("");
System.out.println("");
System.out.println("################################################################");
System.out.println("");
System.out.println("");
System.out.println("");
System.out.println("Certificate is: " + cert);
if(cert instanceof X509Certificate) {
try {
( (X509Certificate) cert).checkValidity();
System.out.println("Certificate is active for current date");
FileOutputStream os = new FileOutputStream("/home/sebastien/Bureau/myCert"+i);
i++;
os.write(cert.getEncoded());
} catch(CertificateExpiredException cee) {
System.out.println("Certificate is expired");
}
} else {
System.err.println("Unknown certificate type: " + cert);
}
}
}
并将它们导入信任库:
keytool -import -alias GoogleInternetAuthority -file myCert1 -keystore truststore
关于java - 仅具有 https URL 时获取证书并将其添加到 Java 信任库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12528328/