Dado que tengo CAS en un Tomcat 5.5 voy a configurar el conector SSL. Ésta es una tarea muy sencilla pero he tenido un problema y quiero resaltarlo en este post por si otro pringao como yo cae en el mismo agujero.
Más información en Apache.org
Asunciones
- En este ejemplo voy a utilizar certificados self-signed; con esto quiero decir que van a ser certificados de prueba que no van a ser validados por ninguna entidad certificadora como VeriSign, Thawte, etc.
- Utilizaré como servidor Tomcat 5.5
- Utilizaré la herramienta keytool JDK keytool para generar los certificados
Paso 1: Generar certificado SSL
Paso 1.1: Generar el certificado
NOTA: Es muy importante que en nombre indiquéis el nombre del servidor, sino no se corresponderá el certificado con la dirección del servidor. En mi caso gammu.
C:\desarrollo\java\install\jdk1.6.0_14\bin>keytool -genkey -alias tomcat_cas -keypass clave_almacen -keyalg RSA
Escriba la contrase±a del almacÚn de claves:
Volver a escribir la contrase±a nueva:
┐Cußles son su nombre y su apellido?
[Unknown]: gammu
┐Cußl es el nombre de su unidad de organizaci¾n?
[Unknown]: c1nn
┐Cußl es el nombre de su organizaci¾n?
[Unknown]: uniovi
┐Cußl es el nombre de su ciudad o localidad?
[Unknown]: Oviedo
┐Cußl es el nombre de su estado o provincia?
[Unknown]: Asturias
┐Cußl es el c¾digo de paÝs de dos letras de la unidad?
[Unknown]: es
┐Es correcto CN=gammu, OU=c1nn, O=uniovi, L=Oviedo, ST=Asturias, C=es?
[no]: y
Se crea un almacén de claves en el directorio del perfil del usuario. En Windows es dentro de Documents and Settings. En mi caso: C:\Documents and Settings\Fer\.keystore
Paso 1.2: Exportar el certificado
C:\desarrollo\java\install\jdk1.6.0_14\bin>keytool -export -alias tomcat_cas -keypass clave_almacen -file server.crt
Escriba la contrase±a del almacÚn de claves:
Certificado almacenado en el archivo <server.crt>
Paso 1.3: Añadir el certificado a la lista de certificados de confianza de las JRE
NOTA: La contraseña que tiene el almacen cacerts es changeit
C:\desarrollo\java\install\jdk1.6.0_14\bin>keytool -import -file server.crt -alias tomcat_cas -keypass clave_almacen
-keystore ..\jre\lib\security\cacerts
Escriba la contrase±a del almacÚn de claves:
Propietario: CN=gammu, OU=c1nn, O=uniovi, L=Oviedo, ST=Asturias, C=es
Emisor: CN=gammu, OU=c1nn, O=uniovi, L=Oviedo, ST=Asturias, C=es
N·mero de serie: 4a83f4f4
Vßlido desde: Thu Aug 13 13:11:48 CEST 2009 hasta: Wed Nov 11 12:11:48 CET 2009
Huellas digitales del certificado:
MD5: 9A:7A:28:F9:20:08:94:8E:EF:CA:5B:87:7C:7D:57:CF
SHA1: C6:4E:89:5B:68:D5:F0:3C:DD:52:4D:0F:EF:CA:C7:02:CF:62:F4:83
Nombre del algoritmo de firma: SHA1withRSA
Versi¾n: 3
┐Confiar en este certificado? [no]: y
Se ha a±adido el certificado al almacÚn de claves
Otra forma de añadir el certificado a la lista de confianza
Si nuestro servidor Tomcat ya tiene instalado el certificado, podemos hacer uso de una utilidad desarrollada por Andreas Sterbenz utilidad InstallCert.
Invocaremos la utilidad indicando nombre de servidor y puerto.
C:\desarrollo>java -cp . InstallCert gammu:8444
Loading KeyStore C:\desarrollo\java\install\jdk1.6.0_14\jre\lib\security\cacerts…
Opening connection to gammu:8444…
Starting SSL handshake…
No errors, certificate is already trusted
Server sent 1 certificate(s):
1 Subject CN=gammu, OU=c1nn, O=uniovi, L=Oviedo, ST=Asturias, C=es
Issuer CN=gammu, OU=c1nn, O=uniovi, L=Oviedo, ST=Asturias, C=es
sha1 c6 4e 89 ……………………..
md5 9a 7a 28 …………………….
Enter certificate to add to trusted keystore or ‘q’ to quit: [1]
………………………
]Added certificate to keystore ‘cacerts’ using alias ‘gammu-1’
Paso 2: Configurar el conector HTTPS en Tomcat
Tan sólo hay que descomentar el conector y poner los valores de keystore, truststore…
Hay que modificar el archivo server.xml para configurar el conector.
En mi caso este archivo está en: C:\desarrollo\java\install\tomcat-5.5\conf\server.xml
Asimismo he cambiado algunos puertos (por ejemplo el 8443 a 8444) ya que tengo varios Tomcat corriendo a la vez.
NOTA: No olvidéis indicar la password del trustore porque la que tiene por defecto Tomcat no funciona. También recordad que si cambiais el puerto, tenéis que hacer lo mismo en el redirect port del conector no SSL.
Adjunto un ejemplo:
————————————- server.xml —————————————————-
<Connector port=»8444″ maxHttpHeaderSize=»8192″
maxThreads=»150″ minSpareThreads=»25″ maxSpareThreads=»75″
enableLookups=»false» disableUploadTimeout=»true»
acceptCount=»100″ scheme=»https» secure=»true»
clientAuth=»false» sslProtocol=»TLS»
keystoreFile=»C:/Documents and Settings/Fer/.keystore»
keystorePass=»clave_almacen»
truststoreFile=»C:/desarrollo/java/install/jdk1.6.0_14/jre/lib/security/cacerts»
truststorePass=»changeit«/>
http://www.aaic.es/es/foro-aaic.html?func=view&catid=6&id=4883
Un saludo.
Estoy tratando de configurar Pentaho-Liferay-tomcat con el CAS Jasig 3.3.3. Seguí estos pasos y generé el certificado pero cuando me loggueo en el CAS se me redirecciona para una página en blanco y en la consola del tomcat me muestra el error: unable to find valid certification path to requested target.