簡體   English   中英

收到異常“ SSLPeerUnverifiedException:對等方未通過身份驗證”,如何避免/忽略它?

[英]Getting an exception “SSLPeerUnverifiedException: peer not authenticated”, how can I avoid/ignore it?

我正在嘗試使用HtmlUnit(Java庫)登錄到一個網站,並且遇到一個異常,我覺得自己可以忽略。 例外是“ javax.net.ssl.SSLPeerUnverifiedException:對等方未通過身份驗證”。 我將范圍縮小到支持“ www.thesite.com”的證書,但是它確實使用了“ somedomain.thesite.com”。 我認為該錯誤是由於證書未命名其在某些javascript函數中使用的其他子域而引起的。 這很奇怪,因為當手動使用Firefox時,我看不到這些異常,使我認為還有其他事情在發生。

以下是我正在使用的代碼:

// <editor-fold desc="User Credentials and site.">
String user = "auser";
String password = "apassword";

String mainUrl = "https://www.awebsite.com/";

// Setup Ajax & Cookies
AjaxController ajaxController = new AjaxController();
CookieManager cookieManager = new CookieManager();
cookieManager.setCookiesEnabled(true);

// Setup WebClient
WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3_6);
webClient.setAppletEnabled(true);
webClient.setCssEnabled(true);
webClient.setJavaScriptEnabled(true);
webClient.setAjaxController(ajaxController);
webClient.setThrowExceptionOnScriptError(false);
webClient.setThrowExceptionOnFailingStatusCode(false);
webClient.setCookieManager(cookieManager);

/*
 * Provider p = new sun.security.pkcs11.SunPKCS11();
 * Security.addProvider(p);
 */

//webClient.set
HtmlPage page = null;

try {
    webClient.setUseInsecureSSL(true);
    page = webClient.getPage(mainUrl);

    // fill in form
    HtmlForm htmlForm = page.getFormByName("thisForm");
    HtmlInput userField = htmlForm.getInputByName("Username");
    HtmlInput passwordField = htmlForm.getInputByName("Password");

    // Enter login and password
    userField.setValueAttribute(user);
    passwordField.setValueAttribute(password);

    //HtmlPage mainMenuPage = htmlForm.click();
    HtmlElement element = htmlForm.getInputByValue("Login");

    page = element.click();
    webClient.waitForBackgroundJavaScript(5000); // pause if

    System.err.println(page.asText());
    System.err.println(page.asXml());

} catch (Exception ex) {
    ex.printStackTrace();
}

webClient.closeAllWindows();

}

如您所見,我已啟用“ webClient.setUseInsecureSSL(true);” 在HtmlUnit庫中。 我認為應該這樣做。 但是,在這一點上,我陷入困境。

這是我得到的異常錯誤:

javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
    at com.sun.net.ssl.internal.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:352)
    at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128)
    at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:397)
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:148)
    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149)
    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:121)
    at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:573)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:425)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:776)
    at com.gargoylesoftware.htmlunit.HttpWebConnection.getResponse(HttpWebConnection.java:152)
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1439)
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1358)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:307)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:373)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:358)
    at com.mycompany.extract.Program.main(Program.java:62)

有什么想法或建議嗎? 該程序在出現此錯誤后根本不會繼續執行,我也不在乎證書是否有問題(它是有效的證書,僅使用其他子域),證書也不受我控制。

問題是您需要該子域的有效證書。 獲取它,並將其添加到您正在使用的Java版本中的jssecacerts中。

我是使用InstallCert.java完成的。 這里有一些有用的文檔: http : //miteff.com/install-cert ,也可能在這里: http : //pinchii.com/home/tag/jssecacerts/

一個簡單的谷歌搜索“ InstallCert.java”應該給你很多結果。

祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM