私はHtmlUnit(Javaライブラリ)を使用してWebサイトにログインしようとしていますが、無視してもいいと思う例外があります。例外は「javax.net.ssl.SSLPeerUnverifiedException:ピアが認証されていません」です。私はこれを証明書のサポート "www.thesite.com"に限定しましたが、 "somedomain.thesite.com"を使用します。私が信じているエラーは、証明書がいくつかのjavascript関数で使用する他のサブドメインの名前を付けないためです。手でFirefoxを使用したときと同じように、私はこれらの例外を見ることができないので、何か他のことが起こっていると思うように思えるのです。あなたが見ることができるように、私が有効になっている「SSLPeerUnverifiedException:ピアが認証されていません」という例外が発生しましたが、どのように回避/無視できますか?
// <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を;':以下
は、私が使用していたコードです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)
任意のアイデア、または提案ですか?プログラムは単にこのエラーの後に続かない、証明書が悪い(それは有効な証明書で、別のサブドメインを使用するだけである)場合でも気にしない。
これらの[手順](http://www.julespotvin.com/?p=76)に従ってください。 –