当前位置: 首页 > 知识库问答 >
问题:

被测网站无有效证书?(使用HTMLUnit/Java)

翁宏茂
2023-03-14

我正在尝试创建一个有效的证书来自动访问网站。我在Java中使用HTMLUnit。

这是我的代码:

@BeforeClass
    public static void init() throws IOException, InterruptedException, NoSuchAlgorithmException, UnrecoverableEntryException {

        driver = new HtmlUnitDriver();

        WebClient webClient = new WebClient(BrowserVersion.CHROME);


        host = "192.x.x.x";
        String name = "username", password = "password";
        webClient.addRequestHeader(name, password);
        URL url = new URL("https://"+"host"+"/<rest of url>");

        try {
            webClient.openWindow(url, "Main");

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

网站的证书有问题

javax.net.ssl.SSLHandshakeExc0019:sun.security.validator.ValidatorExc0019: PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderExc0019:无法找到有效的认证路径请求目标在sun.security.ssl.lerts.getSSLExcture(lerts.java:192)在sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1949)sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302)sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296)在sun.security.ssl.ClientHandshaker.server证书(ClientHandshaker.java:1509)在sun.security.ssl.ClientHandshaker.process消息(ClientHandshaker. java: 216)在sun. security. ssl。Handshaker. ProcLoop(Handshaker. java: 979)at sun. security. ssl。Handshakerprocess_record(Handshaker. java: 914)at sun. security. ssl.SSLSocketImp. readRecords(SSLSocketInp. java: 1062)at sun. security. ssl.在sun. security. ssl的SSLSocketImp. perform初始握手(SSLSocketInp. java: 1375)。启动握手(SSLSocketImp. java: 1403)在sun. security. ssl。开始握手(SSLSocketImp. java: 1387)在org. apache. http. conn. ssl。SSLConnectionSocketFactory. createLayeredSocket(SSLConnectionSocketFactory. java: 396)在org. apache. http. conn. sl。SSLConnectionSocketFactory. ConnectSocket(SSLConnectionSocketFactory. java: 355)在com. gargoylesoftware. htmlunit. http客户端。HtmlUnitSSLConnectionSocketFactory. ConnectSocket(HtmlUnitSSLConnectionSocketFactory. java: 186),网址为org. apache. http. imp. conn。DefaultHttpClientConnectionoperator. link(DefaultHttpClientConnectionoperator. java: 142)位于org. apache. http. imp. conn。PoolingHttpClientConnectionManager. Connect(PoolingHttpClientConnectionManager. java: 359),网址为org. apache. http. imp. exchain。在org. apache. http. implified. exec建立路由(Main ClientExec. java: 381)。在org. apache. http. pv. exec.执行(Main ClientExec. java: 237)。在org. apache. http. implified. exec中执行(原型执行. java: 185)。执行(RetryExec. java: 89)在org. apache. http. pimplp. exchain。执行(ReDirectExec. java: 111)在org. apache. http. imp. client.InternalHttpClient. doExecute(InternalHttpClient. java: 185)at org. apache. http. pp. client.在com. gargoylesoftware. htmlunit执行(CloseableHttpClient. java: 72)。在com. gargoylesoftware. htmlunit.获取响应(HttpWebConnection. java: 194)。在com. gargoylesoftware. htmlunit.上的WebClient. loadWeb响应FromWebConnection(WebClient. java: 1372)。在com. gargoylesoftware. htmlunit.上的WebClient. loadWeb响应(WebClient. java: 1291)。WebClient. getPage(WebClient. java: 390)at com. gargoylesoftware. htmlunit.WebClient. getPage(WebClient. java: 311)at com. gargoylesoftware. htmlunit.WebClient. openWindow(WebClient. java: 877)at com. gargoylesoftware. htmlunit.WebClient. openWindow(WebClient. java: 854)at test.[CNNVD]SeleniumHTMLUnitHeadless Test. init(SeleniumHTMLUnitHeadless Test. java: 274)在sun.反射。nativemethod odAccessorImp. invke0(本机方法)在sun.反射。NativeMEDAccessorInp. invoke(NativeMEDAccessorInp. java: 62)在sun. reff。在java. lang.反射中调用(委托方法访问或执行. java: 43)。在org. testng. interal上调用(method. java: 497)。在org. testng. interal.中的方法(MEDInvocationHelper. java: 108)。在org. testng. interal的Invoker. InvkeConfigurationmethod(Invoker. java: 523)。配置(Invoker. java: 224)在org. testng. interal。配置(Invoker. java: 146)在org. testng. interal。在org. testng. interal上的TestMeodWorker. invkeBeforeClass方法(TestMeodWorker. java: 166)。在org. testng运行(TestMEODWorker. java: 105)。在org. testng上运行(TestRunner. java: 744)。在org. testng运行(TestRunner. java: 602)。SuiteRunner. runTest(SuiteRunner. java: 380)at org. testng.SuiteRunner. run顺序(SuiteRunner. java: 375)

嗯,我下载了证书并将其导入JAVA_Home中的cacerts文件。

结果是一个例外:

javax。网ssl。SSLPeerUnverifiedException:的证书

好的,我搜索了一下,原因似乎是CN无效。

我建立了一个新的证书,使用相同的csr内容,除了CN(我使用主机名(代码中的ip)),将其导入到cacerts文件中JAVA_Home,然后我得到了与使用第一个证书完全相同的异常。但是我无法想象没有解决办法。你能帮帮我吗?

如果您需要更多信息,请告诉我。

谢谢!

共有1个答案

施雅懿
2023-03-14

我通过关闭认证检查解决了这个问题。如果你有同样的问题,看看这个:http://www.nakov.com/blog/2009/07/16/disable-certificate-validation-in-java-ssl-connections/

 类似资料:
  • 问题内容: 我正在编写一个Java程序来登录学校用来发布成绩的网站。 这是登录表单的网址:https : //ma- andover.myfollett.com/aspen/logon.do 这是登录表单的HTML: 我正在尝试使用以下代码登录: 该程序将填充用户名框,然后单击“登录”按钮,但不会填充密码框。我可以进行哪些更改以使该程序正常运行?我怀疑密码框的“ type =’password’”

  • 我想在不使用应用编程接口的情况下访问instagram页面。我需要找到追随者的数量,所以这不仅仅是一个源下载,因为页面是动态构建的。 我发现HtmlUnit是一个模拟浏览器的库,这样JS就会被渲染,我就能得到想要的内容。 但是,此调用会导致以下异常: 所以它无法访问该脚本,但如果我正确解释了这一点,它只是为了加载字体,我不需要。我在google上搜索了如何告诉它忽略页面的某些部分,并找到了这条线索

  • 接下来的步骤: 我已经使用代理启动了jeter,否则我不会记录任何东西,使用:C:\apache-jmetam-2.13\apache-jmetam-2.13\bin启动 局域网设置: 只使用代理服务器为您的局域网被选中,其他一切都在局域网设置中未被选中。 地址:localhost端口:8080 jeter网站的安全证书。

  • 我有一个带有这些命令的自签名证书链,并在Apache服务器上配置了它们 但是当我尝试 我从openssl中得到一个错误 用于生成证书的命令或配置文件有问题吗? [req] distinguished_name=req_distinguished_name x509_extensions=v3_ca dirstring_type=nobmp [req_distinguished_name] comm

  • nginx 证书问题 已经使用自签名证书生成了一个证书, 并配置到 nginx 中了, 域名 CN 也配置正确了 然后在客户端 hosts 文件中也配置了对应映射 导入了对应的证书文件 然后访问域名, 说证书无效, 每次都到这里卡住, 不知道这证书哪里无效了, 我都导入到了受信任的根证书里面了, 并且在 chrome 的证书管理中也能看到

  • 在下面的代码中,我尝试了两种组合 用户(请参阅附图),密码 访问ID和访问密钥 两人都犯了同样的错误。我在家庭网络的eclipse环境中运行了这段代码。 错误 代码