2012-07-27 110 views
3

如何將我的HttpsURLConnection設置爲僅信任特定證書?目前我的代碼被設置爲信任所有證書。但要求只信任一個特定的證書,不要相信其他證書。我怎樣才能在Java中做到這一點?我正在使用JDK 1.5。我如何信任特定的自簽名證書? (不信任全部)

+0

此自簽名證書是否對您嘗試聯繫的URL中的主機名有效? – Bruno 2012-07-27 09:24:48

+0

[我如何接受Java HttpsURLConnection的自簽名證書?](http://stackoverflow.com/questions/859111/how-do-i-accept-a-self-signed-certificate-with -a-java-httpsurlconnection) – Bruno 2012-07-27 15:20:06

回答

3

您可以通過創建自定義SSLSocketFactory並提供您自己的TrustManager來信任特定的證書。請參閱...

Trusting all certificates using HttpClient over HTTPS

How can I use different certificates on specific connections?

在你的TrustManager,您會從客戶端/服務器被移交證書鏈,以檢驗對你的特定證書。

+5

第一個鏈接(「信任所有證書[...]」)恰恰是不應該做的(如果你想阻止MITM攻擊)。 – Bruno 2012-07-27 09:22:39

+0

布魯諾是正確的。您應該絕對提供驗證服務器/客戶端證書的機制。 – 2012-07-27 15:18:10

+0

謝謝! :)能夠使用第二個鏈接。是的,如果您在使用https時信任所有證書,那麼https是無用的。 – Arci 2012-08-22 08:33:13

1

將其導入到您的客戶端信任庫中。

+0

如何導入? – Arci 2012-07-28 04:13:38

+0

@Arci隨着keytool。請參閱JSSE參考指南。 – EJP 2012-07-30 22:54:21

+0

@downvoter你一定在開玩笑吧。請解釋。如果你認爲這個答案不正確,你對這個話題一無所知。 – EJP 2012-07-30 22:55:17