Vou detalhar o meu problema.
Configurando o tomcat para aceitar https.
Primeiro gerei os certificados executando os comandos a seguir.
keytool -genkey -alias tomcat-sv -dname “CN=localhost, OU=X, O=Y, L=Z, S=XY, C=YZ” -keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore
keytool -export -alias tomcat-sv -storepass changeit -file server.cer -keystore server.keystore
keytool -genkey -alias tomcat-cl -dname “CN=Client, OU=X, O=Y, L=Z, S=XY, C=YZ” -keyalg RSA -keypass changeit -storepass changeit -keystore client.keystore
keytool -export -alias tomcat-cl -storepass changeit -file client.cer -keystore client.keystore
keytool -import -v -trustcacerts -alias tomcat -file server.cer -keystore client.keystore -keypass changeit -storepass changeit
keytool -import -v -trustcacerts -alias tomcat -file client.cer -keystore server.keystore -keypass changeit -storepass changeit
Foram criados estes 4 arquivos:
server.keystore
server.cer
client.keystore
client.cer
Coloquei os 4 arquivos no diretório C:\certificados
Alterei o arquivo C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\server.xml
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="C:\certificados\server.keystore" keystorePass="changeit"
clientAuth="false" sslProtocol="TLS" />
Gerando o cliente java
Tenho este serviço https://localhost:8443/axis2/services/hello?wsdl
Criei um projeto java no netbeans
Criei um Cliente para serviço Web informando o wsdl acima.
E aqui está o código do cliente, quando executo ele não retorna o valor e acontece uma exceção.
Obs.: Quando eu crio um Cliente para serviço Web informado o endereço do serviço usando http, funciona normalmente, o problema é quando coloco https.
public class https {
public static void main(String[] args) {
// TODO code application logic here
try { // Call Web Service Operation
namespace.Hello service = new namespace.Hello();
namespace.HelloPortType port = service.getHelloHttpSoap12Endpoint();
// TODO process result here
namespace.MostraHelloResponse result = port.mostraHello();
System.out.println("Result = "+result);
} catch (Exception ex) {
// TODO handle custom exceptions here
}
}
}
Nesse processo todo o que estou fazendo errado, o que está faltando?
Obrigado.
Douglas.