當使用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