当使用HttpsURLConnection进行HTTPS连接时,我需要将自己的证书验证步骤放在SSL握手中。我已经写了自己的证书验证码来验证主机证书中的某些属性,如证书吊销状态使用在线证书状态协议。在Java中包含此步骤的正确方法是什么?我可以将它作为默认HostNameVerifier的一部分添加,如下所示,但有没有适当的方法来做到这一点?我们如何在HTTPS中执行我们自己的证书验证步骤
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
HostnameVerifier verifier = HttpsURLConnection.getDefaultHostnameVerifier();
public boolean verify(String s, SSLSession sslSession) {
return verifier.verify(s, sslSession) && MyVerifier.doMyVerification(sslSession);
}
});
'getAcceptedIssuers()'不允许返回null,并且这样做不安全。同样在'checkClientTrusted()'中什么都不做。' – EJP
是的,并且返回true验证HostName也不安全,这很明显。开发人员需要确定实施这些方法的安全方式。问题是“如何在HTTPS中执行自定义证书验证步骤”,并且应该在checkServerTrusted(..)方法的自定义TrustManager中添加,而不是在HostNameVerifier中添加。 – Jeewantha