java - 如何使用 JSOUP/Rest Assured Api 关闭 SSL 证书并获得登录响应?

标签 java testing ssl-certificate jsoup rest-assured

*当我尝试在 Postman 中关闭 ssl 证书验证时,我得到了响应,但我不确定如何通过代码关闭 ssl 证书验证

我使用了下面的代码 (JSOUP),我得到了 "javax.net.ssl.SSLHandshakeException:"

    public String  Login () throws Exception {
            Connection.Response response = (Connection.Response) Jsoup.connect("url").ignoreContentType(true)
                    .method(Connection.Method.POST)
                    .data("login_submit","Log In", "password","Password1","username","batman","Content-Type","application/x-www-form-urlencoded")
                      .header("Content-Type", "application/x-www-form-urlencoded")
                      .header("Cache-Control", "no-cache")
                    .execute();
            System.out.println(response.cookie("PHPSESSID"));
            return response.cookie("PHPSESSID");

        }

**Stacktrace:**


    javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
        at sun.security.ssl.Alerts.getSSLException(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)
        at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
        at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
        at sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source)
        at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source)
        at sun.security.ssl.Handshaker.processLoop(Unknown Source)
        at sun.security.ssl.Handshaker.process_record(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
        at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
        at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
        at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(Unknown Source)
        at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:425)
        at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:410)
        at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:164)
        at lib.dataObject.dataCleanup.DeprecateOrganizations.Login(DeprecateOrganizations.java:24)
        at lib.dataObject.dataCleanup.Login.login(Login.java:11)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85)
        at org.testng.internal.Invoker.invokeMethod(Invoker.java:639)
        at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:816)
        at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1124)
        at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
        at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108)
        at org.testng.TestRunner.privateRun(TestRunner.java:774)
        at org.testng.TestRunner.run(TestRunner.java:624)
        at org.testng.SuiteRunner.runTest(SuiteRunner.java:359)
        at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354)
        at org.testng.SuiteRunner.privateRun(SuiteRunner.java:312)
        at org.testng.SuiteRunner.run(SuiteRunner.java:261)
        at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
        at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
        at org.testng.TestNG.runSuitesSequentially(TestNG.java:1215)
        at org.testng.TestNG.runSuitesLocally(TestNG.java:1140)
        at org.testng.TestNG.run(TestNG.java:1048)
        at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
        at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
        at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
    Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
        at sun.security.validator.PKIXValidator.doBuild(Unknown Source)
        at sun.security.validator.PKIXValidator.engineValidate(Unknown Source)
        at sun.security.validator.Validator.validate(Unknown Source)
        at sun.security.ssl.X509TrustManagerImpl.validate(Unknown Source)
        at sun.security.ssl.X509TrustManagerImpl.checkTrusted(Unknown Source)
        at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)
        ... 40 more
    Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
        at sun.security.provider.certpath.SunCertPathBuilder.build(Unknown Source)
        at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source)
        at java.security.cert.CertPathBuilder.build(Unknown Source)
        ... 46 more*

请告诉我一种获取登录响应的方法。

最佳答案

您可以通过将以下内容添加到您的连接语句来关闭 TLS 证书验证:

.validateTLSCertificates(false)

喜欢:

Jsoup.connect("url").validateTLSCertificates(false)

关于java - 如何使用 JSOUP/Rest Assured Api 关闭 SSL 证书并获得登录响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51184247/

相关文章:

java - 基于事件和一组标准构建 Spring 状态机

javascript - 检查是否有效

testing - 让 Mocha 与 React Native 一起工作 - 错误 w/requiring & addons

python - SSL 错误 - 证书验证失败 - AWS IOT (basicPubSub.py)

windows - 由未知权威签署的证书

java - 使用 -Djavax.net.debug=all 调试 Java SSL 握手

java - (2009) - 反混淆 Java 代码的工具

java - MockMvc Sp​​ring 空指针

java - 如何正确处理max/min int值边缘情况-Java

unit-testing - NUnit GUI 未找到 app.config 文件