PFXファイルを使用してWebサービスを呼び出すためのこのコードがあります
System.setProperty("javax.net.ssl.keyStoreType", "pkcs12");
System.setProperty("javax.net.ssl.keyStore", pathPFX);
System.setProperty("javax.net.ssl.keyStorePassword", pass);
System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");
QName serviceName = new QName("www.example.org", "example");
//QName for Port As defined in wsdl.
QName portName = new QName("www.example.org", "exampleSOAP");
// Create a dynamic Service instance
Service service = Service.create(serviceName);
// Add a port to the Service
service.addPort(portName, SOAPBinding.SOAP11HTTP_BINDING, endpointAddress);
//Create a dispatch instance
Dispatch<SOAPMessage> dispatch = service.createDispatch(portName, SOAPMessage.class, Service.Mode.MESSAGE);
MessageFactory factory = MessageFactory.newInstance();
SOAPMessage request = factory.createMessage();
// Object for message parts
SOAPPart sp = request.getSOAPPart();
StreamSource prepMsg = new StreamSource(new FileInputStream(pathXML));
sp.setContent(prepMsg);
// Save message
request.saveChanges();
SOAPMessage reply = null;
boolean success = true;
String response = "";
try {
//Invoke Endpoint Operation and read response
reply = dispatch.invoke(request);
ByteArrayOutputStream out = new ByteArrayOutputStream();
reply.writeTo(out);
creaXMLResponse(out.toString());
}
catch (WebServiceException wse)
{
wse.printStackTrace();
success = false;
}
そして、それはうまく機能していますが、同じTomcatで実行される別のクライアントに対して別のPFXファイルを使用する必要があります。
このコードを使用すると、Tomcat を再起動して別の PFX を使用する必要があるため、pfx をキーストアとして選択する動的な方法を作成する必要がありますが、JKS ファイルを使用する必要はありません (クライアントの数が増加し、作成できなくなります)。毎回新しいJKS) ??
注: キーストアと SSLContext の使用について読んでいますが、それらを実際のコードにリンクする方法がわかりません
前もって感謝します