Android 中的自签名证书
Self Signed Certificate in Android
我可以使用我使用 openssl 创建的自签名证书。
我在 HttpsURLConnection
中使用证书时遇到的唯一问题是 HostnameVerifier。
如果我提供自己的 HostnameVerifier,它总是 return true
像 :
HostnameVerifier hostnameVerifier = new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
};
在
urlConnection.setHostnameVerifier(hostnameVerifier);
有效。
有什么方法可以为我们自己的主机提供验证,而不是为所有主机提供验证?
和
HostnameVerifier
也适用于本地网络(本地 IP)
让我们假设您的服务器应用程序托管在一台服务器机器内,该机器具有服务器证书,例如,"Issued to"
是 "localhost"
。然后,在 verify
方法中你可以验证 "localhost"
。
HostnameVerifier hostnameVerifier = new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
HostnameVerifier hv =
HttpsURLConnection.getDefaultHostnameVerifier();
return hv.verify("localhost", session);
}
};
我可以使用我使用 openssl 创建的自签名证书。
我在 HttpsURLConnection
中使用证书时遇到的唯一问题是 HostnameVerifier。
如果我提供自己的 HostnameVerifier,它总是 return true
像 :
HostnameVerifier hostnameVerifier = new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
};
在
urlConnection.setHostnameVerifier(hostnameVerifier);
有效。
有什么方法可以为我们自己的主机提供验证,而不是为所有主机提供验证?
和
HostnameVerifier
也适用于本地网络(本地 IP)
让我们假设您的服务器应用程序托管在一台服务器机器内,该机器具有服务器证书,例如,"Issued to"
是 "localhost"
。然后,在 verify
方法中你可以验证 "localhost"
。
HostnameVerifier hostnameVerifier = new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
HostnameVerifier hv =
HttpsURLConnection.getDefaultHostnameVerifier();
return hv.verify("localhost", session);
}
};