- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个需要从 REST API 获取实例的 jar。我已经完成了 SSL 证书设置并生成了私钥和公钥作为 JKS。我已将我的证书导入到 Java\jdk1.8.0_201\jre\lib\security\cacerts。它适用于单向身份验证。但是在我更改为双向身份验证后,我收到致命警报:bad_certificate 错误。
我在行 Response response = invocationBuilder.get(); 中收到错误
WebTarget target = cp.getClient()
.target("https://" + cp.getServerIp() + ":" + cp.getRestAPIPort() + "/product-info").path("");
Invocation.Builder invocationBuilder = target
.request(new String[] { MediaType.APPLICATION_JSON_TYPE.toString() });
invocationBuilder.header("Authorization", "Bearer " + cp.getAccessToken());
Response response = invocationBuilder.get();
错误响应:
javax.ws.rs.ProcessingException: javax.net.ssl.SSLHandshakeException: Received fatal alert: bad_certificate
at org.glassfish.jersey.client.internal.HttpUrlConnector.apply(HttpUrlConnector.java:284)
at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:278)
at org.glassfish.jersey.client.JerseyInvocation.lambda$invoke$0(JerseyInvocation.java:753)
at org.glassfish.jersey.internal.Errors.process(Errors.java:316)
at org.glassfish.jersey.internal.Errors.process(Errors.java:298)
at org.glassfish.jersey.internal.Errors.process(Errors.java:229)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:414)
at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:752)
at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:419)
at org.glassfish.jersey.client.JerseyInvocation$Builder.get(JerseyInvocation.java:319)
at com.p3.ca.ia.rest.RestLayerActivities.getInstanceInformation(RestLayerActivities.java:108)
at com.p3.ca.ia.rest.IaRestMain.begin(IaRestMain.java:87)
at com.p3.ca.CaIaApplication.main(CaIaApplication.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: bad_certificate
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:2020)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1127)
at sun.security.ssl.SSLSocketImpl.waitForClose(SSLSocketImpl.java:1761)
at sun.security.ssl.HandshakeOutStream.flush(HandshakeOutStream.java:124)
at sun.security.ssl.Handshaker.sendChangeCipherSpec(Handshaker.java:1152)
at sun.security.ssl.ClientHandshaker.sendChangeCipherAndFinish(ClientHandshaker.java:1280)
at sun.security.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:1190)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:369)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1037)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:965)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1064)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1564)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:347)
at org.glassfish.jersey.client.internal.HttpUrlConnector._apply(HttpUrlConnector.java:390)
at org.glassfish.jersey.client.internal.HttpUrlConnector.apply(HttpUrlConnector.java:282)
... 20 more
最佳答案
服务器很可能不信任您的 CA 客户端证书。
关于javax.ws.rs.ProcessingException : javax.net.ssl.SSLHandshakeException:收到致命警报:bad_certificate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59281341/
我将 key 和证书(组合)放入一个 cert.pem 文件中,我得到,“异常”:“javax.net.ssl.SSLHandshakeException”,"message": "收到致命警报:ba
我正在尝试与服务器建立 SSL 连接。我已经创建了一个 Truststore 并将服务器的证书以及我的证书作为受信任的条目导入到 Keystore 中。服务器人员还将我的证书导入到他们的 keysto
我正在尝试设置 SSL 套接字连接(并在客户端上执行以下操作) 我生成证书签名请求以获取签名的客户端证书 现在我有私钥(在 CSR 期间使用)、签名的客户端证书和根证书(带外获得)。 我将私钥和签名的
我已经在本地创建了两台服务器,并且我将对它们的通信应用相互身份验证。 我只是不知道问题是什么。我对这种机制缺乏了解,但我对服务器本身也缺乏了解。 创建每个 keystore keytool -genk
我正在尝试使用在 jboss 上运行的客户端连接到 EJBCA 服务器。如果我的客户端是一个独立的 java 应用程序,它运行正常,但是当客户端是一个 Rest web 服务时,我有这个错误:
我正在使用 CXF 生成的代码通过 SSL 和公司代理连接到远程 Web 服务。当通过 Java API 建立连接并且所有 SSL 设置都设置为系统属性时,代码工作正常。 System.setProp
我正在使用自签名证书来进行客户端身份验证。我将我的服务器配置为仅在客户端包含客户端 keystore 的情况下才接受连接。 这在 soapUI 工具中运行良好。但是当我尝试在我的代码中实现它时它抛出
我在使用改造、okhttp-tls 和 Spring Boot 的 mTLS 方面遇到了一些问题。如果 server.ssl.client-auth 未设置为 need,通信工作正常,因此服务器身份验
我正在使用 Gadling 3.0.0 作为 SBT 中的插件,我正在按照配置标题下的 https://gatling.io/docs/current/http/recorder/#recorder
我有一个需要从 REST API 获取实例的 jar。我已经完成了 SSL 证书设置并生成了私钥和公钥作为 JKS。我已将我的证书导入到 Java\jdk1.8.0_201\jre\lib\secur
我需要使用自签名(或未签名)证书作为我的流程之一的入站端点的 HTTPS 监听器的证书。我尝试了几种方法来生成证书,但是当监听器尝试读取请求时,我总是得到一个错误: javax.net.ssl.SSL
有人能告诉我这里到底发生了什么吗?。我正在尝试与服务器建立 SSL 连接。使用 Djavax.ne.debug 命令运行我的应用程序后,我明白了。 C:\Inetpub\asp\AbujaElectr
尝试访问 WSDL 端点时出现以下错误。 首先,我使用 cliengen ant 任务创建了客户端 jar,然后创建了一个简单的 java 类来测试 wsdl 端点,但出现了以下错误 - javax.
我正在尝试在 api 和应用程序之间设置 ssl。当我从我的应用程序调用 api 时遇到问题,我收到如下错误: SEVERE: Servlet.service() for servlet [sprin
我正在执行下面的 cURL 命令,我从服务器得到了正确的响应: curl -k --cert ./xevias.com.crt --key ./xevias.com.key --pass USSEQ
我们的 Java Swing + Visual Basic APP 让用户可以通过 SSL 连接对服务器进行身份验证。现在在同一个实体客户端共享一张智能卡的两个用户突然遇到一个问题:用Java部分无法
我正在尝试向需要证书的服务发出 https 发布请求。我收到了在 SOAPUI 和 Postman 中工作的相同请求。我还能够使用 restTemplate 获得其他不需要证书的 POST 请求以在
我正在使用自签名证书进行 SSL 双向身份验证。我为 client(client-keystore.jks) 和 server(server-keystore.jks) 创建了两个 keystore
我是一名优秀的程序员,十分优秀!