Para la creación de un certificado podemos usar tanto la aplicación OpenSSL como la herramienta KeyTool del propio jdk. En este caso usaremos keytool para un certificado autofirmado, es decir, no usaremos ninguna entidad certificadora.
Pasos :
1- Desde el shell ( cmd ) ejecutamos por ejemplo :
keytool -genkey -keyalg RSA -keysize 2048 -alias ??? -keystore ??? -validity 365 -keypass ??? -storepass ???
A continuación respondemos a las preguntas.
Nota: No todos los parámetros son obligatorios, por ejemplo, si queremos que no caduque, no usamos el parámetro validity.
Parámetros :
-> keyalg : Algoritmo criptográfico. Además de RSA, también valen: DSA,...
-> keysize : Longitud de la contraseña (en bits).
-> alias : Identificador de nuestro certificado.
-> keystore : Ruta del almacén del certificado. Si no se indica este párametro, el almacén guardado por defecto es .keystore ubicado en directorio (home) del usuario. Extensiones tipicas: .ssl, .keystore, .jks, .csr, ...
-> validity : Días de validez.
-> keypass : Clave con la que podremos acceder a la clave
privada del par de claves creado.
-> storepass: Clave para acceder a nuestro keystore (fichero creado).
2- Para confirmar que todo ha ido correcto, podemos comprobarlo ejecutando (válido cuando no se indica el keystore):
keytool -list -storepass ???
Para verlo más detallado aplicamos:
keytool -list -v alias ??? -storepass ???
donde ??? ha de coincidir con el alias y la contraseña arriba indicada.
3- El fichero generado lo ubicamos en el directorio /conf del servidor Tomcat.
4- Modificamos el fichero server.xml como se muestra a continuación
<!-- Define a SSL HTTP/1.1 Connector on port 8443 This connector uses the JSSE configuration, when using APR, the connector should be using the OpenSSL style configuration described in the APR documentation -->
protocol="HTTP/1.1"
SSLEnabled="true"
maxThreads="150"
scheme="https"
clientAuth="false"
sslProtocol="TLS"
keystoreFile="conf/[nombre_fichero]"
keystorePass="???"/>
Con clientAuth como false no se solicita certificado al cliente durante el establecimiento de la conexión SSL.
Nota: Una herraminta de gran utilidad es Keytool IUI, la cual facilita todo el desarrollo de creación de certificados evitando así la consola.
Cuidado: Si estamos ejecutando la aplicación en un IDE, por ejemplo Eclipse, hemos de aplicar los pasos 3 y 4 en el directorio "server" del workspace del IDE.
Información sacada de:
http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=SSLenTomcat
http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=securitySSLKeytool