当使用自签名证书与 REST API 建立 Https 连接时,我在 Android 9 中收到错误 javax.net.ssl.SSLPeerUnverifiedException: Hostname 196.1X.3X.X2 未验证。但它适用于Android(Pie)之前的Android版本。我把主机名是正确的。该怎么办 ?提前致谢。
我的代码如下。
public static String getResponse(String url) {
URL updateURL ;
HttpsURLConnection connection = null;
try {
HostnameVerifier hostnameVerifier = ( hostname, session ) ->{
HostnameVerifier hv =
HttpsURLConnection.getDefaultHostnameVerifier();
return hv.verify(Common.getHostnameSubject()+"", session ) ;
};
updateURL = new URL(url);
CertificateFactory cf = CertificateFactory.getInstance("X.509");
InputStream caInput = AppApplication.getAppContext().
getAssets().open(Common.getCertificateAssetName());
Certificate ca;
ca = cf.generateCertificate(caInput);
caInput.close();
String keyStoreType = KeyStore.getDefaultType();
KeyStore keyStore = KeyStore.getInstance(keyStoreType);
keyStore.load(null, null);
keyStore.setCertificateEntry("ca", ca);
String …Run Code Online (Sandbox Code Playgroud)