Dea*_*ler 3 ssl ning netty asynchttpclient
我在此页面上看到如何做https
http://sonatype.github.com/async-http-client/ssl.html
但是,如果我只是想忽略并接受任何证书,因为在这种环境中,我现在不在乎中间的人,因为它处于隔离的环境中,而我正在做一些工作以对QA数据进行自动化测试,该怎么办?
也许我的问题是如何伪造Java的SSL堆栈中的SSL,以便它在另一端接受任何证书(这不是双向的,因为它是https)。
上面链接中客户端的通用代码是
char[] keyStorePassword = "changeit".toCharArray();
KeyStore ks = KeyStore.getInstance("JKS");
//ks.load(keyStoreStream, keyStorePassword);
char[] certificatePassword = "changeit".toCharArray();
KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
kmf.init(ks, certificatePassword);
KeyManager[] keyManagers = kmf.getKeyManagers();
javax.net.ssl.TrustManager tm = new MyTrustMgr();
javax.net.ssl.TrustManager[] trustManagers = new javax.net.ssl.TrustManager[]{tm };
SecureRandom secureRandom = new SecureRandom();
SSLContext ctx = SSLContext.getInstance("TLS");
ctx.init(keyManagers, trustManagers, secureRandom);
return ctx;
Run Code Online (Sandbox Code Playgroud)
好吧,解决这个问题,我发现由于某些原因仍然无法解决问题
X509TrustManager tm = new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] xcs,
String string) throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] xcs,
String string) throws CertificateException {
}
public X509Certificate[] getAcceptedIssuers() {
return null;
}
};
SSLContext ctx = SSLContext.getInstance("TLS");
ctx.init(null, new TrustManager[] { tm }, null);
return ctx;
Run Code Online (Sandbox Code Playgroud)
谢谢,院长
小智 6
晚会晚了5年,但今天我也遇到了同样的问题,您的问题在Google搜索中的排名很高。所以也许我的回答会帮助其他人。
以您创建SSLContext的代码为例,此代码将创建一个AsyncHttpClient,它将忽略(或盲目接受)所有SSL证书:
AsyncHttpClientConfig config = new AsyncHttpClientConfig.Builder()
.setSSLContext(createSslContext())
.build();
httpClient = new AsyncHttpClient(config);
Run Code Online (Sandbox Code Playgroud)
如上所述,createSslContext方法是您在答案中包含的代码的精确复制和粘贴:
private SSLContext createSslContext() throws Exception {
X509TrustManager tm = new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] xcs,
String string) throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] xcs,
String string) throws CertificateException {
}
public X509Certificate[] getAcceptedIssuers() {
return null;
}
};
SSLContext ctx = SSLContext.getInstance("TLS");
ctx.init(null, new TrustManager[] { tm }, null);
return ctx;
}
Run Code Online (Sandbox Code Playgroud)
上面的示例适用于Async HTTP Client 1.9.40和Java 1.8
| 归档时间: |
|
| 查看次数: |
2223 次 |
| 最近记录: |