我已经创建了一个webcrawler,它将返回一个URL页面。对于一些URL,我得到了javax。网ssl。SSLHandshakeException:收到致命警报:协议版本
这样做的目的只是解析返回的网页。所以我正在寻找绕过的方法。SSL验证
(s, sslSession) -> true
所以我创建了一个SSLConnectionSocketFactory
private SSLConnectionSocketFactory sslFactory() {
SSLContext sslcontext = null;
try {
sslcontext = SSLContexts.custom().loadTrustMaterial(null, new TrustSelfSignedStrategy()).build();
} catch (KeyManagementException | NoSuchAlgorithmException | KeyStoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslcontext, (s, sslSession) -> true);
return sslConnectionSocketFactory;
}
然后将其添加到HTMLClient
var clientBuilder = HttpClientBuilder.create()
.setDefaultRequestConfig(RequestConfig.custom().setCookieSpec(CookieSpecs.STANDARD).build())
.setRedirectStrategy(new LaxRedirectStrategy())
.setDefaultCookieStore(cookieStore)
.setSSLSocketFactory(sslFactory());
根据我的研究,这应该绕过SSL验证,但它仍然抛出异常。我使用的是httpclient-4.5.13。
我明白这对安全的影响,但这是在解析网页,不会发送任何数据。谢谢你的帮助。
好的,这适用于httpclient-4.5.13 java 11,但不适用于java 16。所以设置可信证书。
private SSLContext SSLConnection() throws NoSuchAlgorithmException, KeyManagementException {
TrustManager[] trustAllCerts = new TrustManager[] {
new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) { }
public void checkServerTrusted(X509Certificate[] certs, String authType) { }
}
};
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
return sc;
}
并将其添加到clientBuilder
var clientBuilder = HttpClientBuilder.create()
.setDefaultRequestConfig(RequestConfig.custom().setCookieSpec(CookieSpecs.STANDARD).build())
.setRedirectStrategy(new LaxRedirectStrategy())
.setDefaultCookieStore(cookieStore)
.setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE)
.setSSLContext(SSLConnection());
我已经创建了一个SSLClient和SSLServer,也创建了密钥库作为"server.jks"为SSLServer和"client.jks"为SSLClient.它抛出一个异常""。我不知道为什么我得到这个异常。我遵循http://ruchirawageesha.blogspot.in/2010/07/how-to-create-clientserver-keystores.html为服务器和
问题内容: 我创建了SSLClient和SSLServer,还为SSLServer 创建了密钥库,将其存储为 “ server.jks”, 对于SSLClient,创建了密钥库为 “ client.jks” 。首先,我执行SSLServer.java文件,然后执行SSLClient.java文件。抛出异常 “”。我不知道为什么我得到这个例外。我按照http://ruchirawageesha.bl
我试图使用放心框架在AWS上为REST API构建一个测试自动化工具。我只是尝试使用一个简单的HTTP POST并检查输出JSON主体。但是当我在Eclipse中运行它时,我会得到SSLHandshakeExc0019。我确实试图研究这个问题,发现它可能与服务器证书有关(收到致命警报:通过SSLHandshakeExc0019handshake_failure),但当我通过POSTMAN测试它时,
问题内容: 我正在尝试使用 liferay中的* javapns 库将推送通知发送到我的设备。这是代码: * 调用pushNotification时出现此错误: 我已经用谷歌搜索了,但是找不到任何解决方案。 有谁知道如何解决这个问题? 问题答案: 当您要连接的服务器没有来自授权CA的有效证书时,通常会引发该异常。 简而言之,您尝试连接的服务器很可能使用自签名证书,因此您必须在Java代码中容纳该证
问题内容: 我正在尝试建立SSL套接字连接(并在客户端上执行以下操作) 我生成了证书签名请求以获取签名的客户证书 现在,我有一个私钥(在CSR中使用),一个签名的客户端证书和根证书(带外获得)。 我将私钥和签名的客户端证书添加到证书链中,并将其添加到密钥管理器中。和根证书到信任管理器。但是我收到了错误的证书错误。 我很确定自己使用的证书正确。是否也应该将签名的客户端证书添加到信任管理器?试了一下,
我得到下面的错误,而记录网站通过JMeter(2.13)。我使用JavaJDK 1.8安装。一个SSLv3兼容ClientHello握手-发现使用小提琴手。尝试在jmeter.properties文件中设置https.default.protocol=SSLv3,但不起作用。javax.net.ssl.SSLHandshakeExcture:收到致命警报:handshake_failuresun.