このページで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;
さて、それをうまくやって、私はこれがまだ何らかの理由で機能していないことを知りました
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;
ありがとう、ディーン