1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
try
{
final Provider pkcs11Provider = initProvider();
.........
// provider initialization is OK
Security.addProvider(pkcs11Provider);
// initialize properties
System.setProperty("javax.net.debug", "SSL,handshake");
System.setProperty("java.security.debug", "all");
System.setProperty("javax.net.ssl.keyStoreProvider", pkcs11Provider.getName());
System.setProperty("javax.net.ssl.keyStoreType", "PKCS11");
System.setProperty("javax.net.ssl.keyStore", "NONE");
System.setProperty("javax.net.ssl.keyStorePassword", pinCode);
System.setProperty("javax.net.ssl.trustStore", "C:\\Program Files\\Java\\jdk\\jre\\lib\\security\\cacerts");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
// creating ssl factory
final KeyStore keystorePkcs11 = KeyStore.getInstance("PKCS11");
keystorePkcs11.load(null, pinCode.toCharArray());
final KeyManagerFactory kKeyManagerFactory = KeyManagerFactory.getInstance("SunX509");
kKeyManagerFactory.init(keystorePkcs11, pinCode.toCharArray());
final KeyStore keystoreTrusted = KeyStore.getInstance("JKS");
keystoreTrusted.load(new FileInputStream("C:\\Program Files\\Java\\jdk\\jre\\lib\\security\\cacerts"), "changeit".toCharArray());
final TrustManagerFactory tTrustManagerFactory = TrustManagerFactory.getInstance("SunX509");
tTrustManagerFactory.init(keystoreTrusted);
final SSLContext sslc = SSLContext.getInstance("TLS");
sslc.init(kKeyManagerFactory.getKeyManagers(), tTrustManagerFactory.getTrustManagers(), null);
final SSLSocketFactory factory = sslc.getSocketFactory();
final SSLSocket socket = (SSLSocket) factory.createSocket("localhost", 8443);
socket.setUseClientMode(true);
socket.startHandshake();
// getting proxy and initialize context infos
final WSTest service = new WSTest();
final WSTestImpl proxy = service.getWSTestImplPort();
final Map<String, Object> reqContext = ((BindingProvider) proxy).getRequestContext();
reqContext.put(MessageContext.HTTP_REQUEST_METHOD, "POST");
reqContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "https://localhost:8443/test-service/WSTest?wsdl");
reqContext.put(JAXWSProperties.SSL_SOCKET_FACTORY, factory);
// calling web service
final String result = proxy.getMessage("toto");
System.out.println("Response : " + result);
}
catch (Exception e)
{
e.printStackTrace();
fail(e.getMessage());
} |
Partager