1. 程式人生 > >https 調用驗證失敗 peer not authenticated

https 調用驗證失敗 peer not authenticated

實現 不同 not org 失敗 下載 efault ltr net

https 調用驗證失敗 peer not authenticated

報錯日誌:

Caused by: javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
at sun.security.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:431)
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128)
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:572)

at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:640)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479)

原因:

簽名驗證失敗,可能對方是內部 https,對應的簽名並不是線上機構簽發的.

操作:

1. 設置 client 不驗證簽名. 可以搜索不同的http 實現

https.setHostnameVerifier(DO_NOT_VERIFY);

2. 配置私自簽發證書對應的根證書. 這種方案是最安全的. 特別適合客戶端的加密訪問.

2.1 如果是從 startSsl 簽發的免費證書, 需要在本地導入startssl 的ca證書 (有些是內置的,有些沒有,也不會去下載) startSsl 是免費的.

2.2 如果是自建的證書,就需要在本地導入自建的 ca 證書,用於簽證.

3. 改用 http 接口

https 調用驗證失敗 peer not authenticated