gpt4 book ai didi

java - 安卓| Google Maps api key 和自签名证书冲突

转载 作者:太空宇宙 更新时间:2023-11-03 14:50:51 25 4
gpt4 key购买 nike

在浪费了很多时间之后,我发现我的 google maps api key 与我的自签名 ssl 证书冲突。

这是我信任证书的方法

public static void trustSelfSignedSSL() {

try {
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return hostname.equals(Config.HTTPS_CERTIFICATE_URL);
//System.out.println("*************################### " + hostname);
//return true;
}
});

CertificateFactory cf = CertificateFactory.getInstance("X.509");

Context appContext = HBGApplication.context;
AssetManager assets = appContext.getAssets();
InputStream caInput = assets.open(Config.HTTPS_CERTIFICATE_ASSETS_FILE);
Certificate ca;
try {
ca = cf.generateCertificate(caInput);
System.out.println("ca=" + ((X509Certificate) ca).getSubjectDN());
} finally {
caInput.close();
}

String keyStoreType = KeyStore.getDefaultType();
KeyStore keyStore = KeyStore.getInstance(keyStoreType);
keyStore.load(null, null);
keyStore.setCertificateEntry("ca", ca);


String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
tmf.init(keyStore);

SSLContext context = SSLContext.getInstance("TLS");
context.init(null, tmf.getTrustManagers(), null);
HttpsURLConnection.setDefaultSSLSocketFactory(
context.getSocketFactory());
} catch (Exception e) { // should never happen
e.printStackTrace();
}
}

如果我评论这个方法 map 工作正常。我试图在验证方法中验证谷歌地图端点,但它似乎从未进入 map 的这种方法。

所以我的问题是:如何将我的自签名证书用于 map 服务以外的服务通信?

最佳答案

我找到了受此链接启发的解决方案

http://www.javacodegeeks.com/2014/11/how-to-setup-custom-sslsocketfactorys-trustmanager-per-each-url-connection.html

它建议添加一个带有 TrustManager 的自定义 SslSocketFactory

关于java - 安卓| Google Maps api key 和自签名证书冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34509518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com