次のコードに従って、TLSv1.2、TLSv1、SSLv3にプロトコルを設定するにはどうすればよいですか? SOAPUIを使用してCXFでSOAPを設定し、SSLとTLSプロトコルのバージョンを設定します
、私は次の設定使用してサービスを要求することができるよ:-Dsoapui.https.protocols = TLSv1.2、TLSv1が、SSLv3の
CXFを使用して、私は取得しています「javax.net .ssl.SSLHandshakeException:いいえ、適切なプロトコル(プロトコルが無効になっているか、暗号スイートが不適切な場合)」
私はのSSLv3を削除していた場合、出力は 『javax.net.ssl.SSLHandshakeException:受信致命的な警告:握手_』
SoapとSSLに関する私の貧しい知識を申し訳ありません...
URL wsdlLocation = this.getClass().getResource("service.wsdl");
Service service = new Service(wsdlLocation);
Soap stub = service.getSoap();
BindingProvider bp = (BindingProvider) stub;
Map<String, Object> context = bp.getRequestContext();
context.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "https://url.to.service/service");
Client client = ClientProxy.getClient(stub);
HTTPConduit httpConduit = (HTTPConduit) client.getConduit();
try {
TLSClientParameters tlsParams = new TLSClientParameters();
tlsParams.setDisableCNCheck(true);
tlsParams.setSecureSocketProtocol("SSLv3");
KeyStore keyStore = KeyStore.getInstance("JKS");
String trustpass = "pass";
File truststore = new File("/home/user/keystore.jks");
keyStore.load(new FileInputStream(truststore), trustpass.toCharArray());
TrustManagerFactory trustFactory = TrustManagerFactory
.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustFactory.init(keyStore);
TrustManager[] tm = trustFactory.getTrustManagers();
tlsParams.setTrustManagers(tm);
truststore = new File("/home/user/keystore.jks");
keyStore.load(new FileInputStream(truststore), trustpass.toCharArray());
KeyManagerFactory keyFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
keyFactory.init(keyStore, trustpass.toCharArray());
KeyManager[] km = keyFactory.getKeyManagers();
tlsParams.setKeyManagers(km);
FiltersType filter = new FiltersType();
filter.getInclude().add(".*_EXPORT_.*");
filter.getInclude().add(".*_EXPORT1024_.*");
filter.getInclude().add(".*_WITH_DES_.*");
filter.getInclude().add(".*_WITH_NULL_.*");
filter.getExclude().add(".*_DH_anon_.*");
tlsParams.setCipherSuitesFilter(filter);
httpConduit.setTlsClientParameters(tlsParams);
} catch (Exception e) {
LOG.error(e.getMessage());
}
私は同じ問題に遭遇し、変更によって
tlsParams.setSecureSocketProtocol("TLSv1");
あなたはどのプロトコルのバージョンを確認する必要がありお知らせ(SSLv1へ tlsParams.setSecureSocketProtocol("SSL");
からプロトコル名を、それを解決した