Generar Certificado Goddady SSL en tomcat 9 centos 7
1. Lo primero que hay que hacer es generar el almacén de claves para poder crear el CSR (archivo del certificado en forma texto) del certificado que se quiere hacer firmar por la CA (empresa certificadora).
#sudo keytool -genkey -alias tomcat -keyalg RSA -keystore www.myDominio.com.co
Recomiendan darle el nombre del dominio que se va a certificar en eñ almacén de claves,
El alias debe ser un nombre único dentro del proceso, porque es la forma que el almacén de claves identifica cada una de las entradas en el.
Cuando se da INTRO, el sistema solicita una clave y su verificación, ( por ejemplo myclave1234) es importante guardarla por se necesita a lo largo de todo el proceso.(mínimo 8 caracteres)
Luego pide una información que debe ser llenada de forma completa, entre esta información la mas importante es nombre y apellido, aquí debe registrar su dominio (no su nombre ni el de la compañía)
¿Cuáles son su nombre y su apellido?: www.myDominio.com.co
¿Cuál es el nombre de su unidad de organización? TIC (puede ser por ejemplo sistemas, desarrollo)
¿Cuál es el nombre de su organización? Mi Empresa S.A. ( aquí si va el nombre la empresa).
¿Cuál es el nombre de su ciudad o localidad? MyCiudad (no abreviar)
¿Cuál es el nombre de su estado o provincia? MyEstado (no abreviar , en mi país Colombia son departamentos)
¿Cuál es el código de país de dos letras de la unidad? CO (CO colombia, US estqados unidos por ejemplo)
El sistema muestra la información ingresado para verificarla
¿Es correcto CN="www.myDominio,com.co", OU=TIC, O=My Empresa S.A- L=MyCiudad, ST=MyEstado, C=CO?
Responder si o no – yes o no dependiendo del idioma.
Introduzca la contraseña de clave para <el alias seleccionado>
(INTRO si es la misma contraseña que la del almacén de claves):
Esta clave es la de la entrada especifica al alias del almacén de claves, la primera que ingreso es la cla general del almacén de claves, si la da INTRO , genera la misma para ambas funciones
TIP: Sugiero escribir la clave de nuevo en lugar de dar INTRO, en ocasiones no queda bien y lo que genera es la clave “changeit” lo cual genera no pocas confusiones. ( myclave1234 ingresada al inicio)
2. Crear el archivo CSR que va a solicitar que ser firmado por una entidad certificadora en mi caso Goddady.
#sudo keytool -certreq -alias tomcat -keystore www.myDominio.com.co -file myCertificado.csr
Cuando le de INTRO el genera 2 archivos:
a. myCertificado.csr.txt ( o algo similar de tipo texto)
b. myCertificado.key.txt ( o algo similar)
El primero debe ser enviado a la entidad certificado para que la verifique, si todo queda correcto la CA devuelve un archivo tipo a su correo ZIP , donde estan los certificados tipo crt y pem necesarios para registrar en su sistema y los certificados intermedios gdig2.crt.pem y gd_bundle-g2-g1.crt
Si no aparecen alli, ingrese de nuevo a su cuenta de la certificador y descarguelos.
Godday permite hacerlo mediante su pagina web en el enlace : https://account.godaddy.com/products?go_redirect=disabled
Cuando ingrese allí seccione: administrar. Para ingresar el contenido de su CSR, no olvide indicar el dominio que desea proteger, sino aparece la opción ingrese por: “ingrese el dominio que protege tu certificado” , puede proteger varias extensiones de tu domino por ejemplo; www.midominio.com, www.midominio.co, mydominio.com.co, mydominio.co, ftp://mydominio.co.co etc
Basta colocar el dominio de forma general colocando asterisco (*) a lo que se quiere generalizar
por ejemplo : *miDominio* , asi cumbre los dominios asociados al servidor tomcatr que esta protegiendo.
Este contenido lo obtiene con cualquier editor de texto procurando mantener siempre las lineas inicial (BEGIN( y final (END) , si faltan el generado indica que hay un error
Después de un tiempo prudencial la entidad enviá un mensaje a su correo indicando que el certificado esta listo, en ocasiones manda el zip completo pero por lo general hay que ingresar de nuevo a la pagina donde registro el el certificado CSR y descargarlo, tener presente seleccionar y descargar la opción Tomcat del menu de descarga.
3. Cree una carpeta para alojar los archivos que el zip va descomprimir
# sudo mkdir mySSL (por ejemplo)
copiar el archivo ZIP alli y descomprimalo.
En general quedan unos 3 o 4 archivos que son los necesarios para generar su autenticación SSL
a. Un archivo con una secuencia aleatoria de letras y números con terminación .crt
b. Un archivo con una secuencia aleatoria de letras y números con terminación .pem
c. Un archivo que contiene un nombre como gdig2.crt.pem
d. Un archivo que contiene la palabra gd_bundle-g2-g1.crt o algo similar
TIP. De la pagina de la empresa certificador CA (goddady) descargar el archivo gdroot-g2.crt (no viene en el archivo zip), en mi caso para AWS Amazon , necesite ese archivo intermedio para poder que el certificado funcione. En otros servidores no lo necesite, peo por seguridad ya lo incluso siempre en mis certificados intermedios para no tener problemas.
4. Para servidores Tomcar es necesario usar un protocolo especial denominado P12, por lo tanto los archivos enviados desde la certificadora no funcionan porque son crt y pem , ademas Tomcart no tiene manera de registrar los archivos intermedios (gdig2.crt.pem,gdroot-g2.crt, etc ) por esa razón su sugiere crear uno nuevo que contenga todos los archivos necesarios , esto lo puedo hacer con cualquier editor de texto que maneje interacciona .txt (notepad, emacs, etc no le inserte caracteres especiales , ni de control al archivo final), abriendo los archivos necesarios .
a. Abrir un archivo nuevo con terminación crt → nuevo.crt (es de tipo texto normal)
b Agregar el archivo recibido con el nombre aleatorio con terminación crt. (por ejemplo 2cdrdesaade1.crt)
c. Agregar el archivo gdroot-g2.crt
d. Agregar el archivo gdig2.crt.pem
e. En ocasiones es necesario agregar también el gd_bundle-g2-g1.crt ( AWS EC2 Amazon me lo requirió los servidor normales no, por seguridad siempre lo incluyo.
4. Con estos pasos ya tenemos el archivo necesario para exportar a P12 que el Tomcat reconoce.
TIP: En casi la totalidad de los manuales para hacer esta gestión recomiendan la herramienta de java keytool. Con los siguientes comandos , a mi estos comandos no me funcionaron por eso dejo mas abajo lo que a mi me funciono sin ningún problema
Adiciona
el archivo raiz de la CA al almacén de claves
sudo
keytool -import -alias root -keystore myDominio.com.co -trustcacerts
-file gdroot.crt
Adiciona el archivo intemedio de el
certificado regresado por la CA
sudo
keytool -import -alias intermedio -keystore myDominio.com.co
-trustcacerts -file gd_bundle-g2-g1.crt
Adiciona
el certificado
sudo
keytool -import -alias tomcat -keystore myDominio.com.co -file
<aleatorioletrasynumeros>crt
Convierte
el almacén de claves a formato P12
sudo
keytool -importkeystore -srckeystore keystore -destkeystore
www.urbicloud.com.co -deststoretype pkcs12
Supuestamente hace los mismo de crear el archivo nuevo que se hablo anteriormente a partir de estos mismos archivos crt con todos los archivos necesarios y lo migra al protocolo P12, la verdad no pude que me funcionara pues aunque indicaba que había quedado correcto al publicarlo en tomcat indicaba que no reconocía la entidad certificadora CA o que falta un archivo intermedio.
Por eso opte por la alternativa que brinda openssl ( descargar de su repositorio si no lo tiene instaladao #sudo yum install openssl ).
Notar que se usa el archivo nuevo.ctr del paso 4.
#sudo openssl pkcs12 -export -in nuevo.crt -inkey myDominiocom.co.key -out myDominio.com.co.p12 -name tomcat -CA file gdig2.crt.pem
Solicita la clave del almacén de claves que genero al inicio del proceso. (myclave1234)
Genera el archivo: myDominio.com.co.p12 que tomcat reconoce.
Yo por comodidad guardo este archivo en la carpeta conf del tomcar (por ejemplo /usr/local/tomcar/conf) de esta me aseguro que cada que hago un respaldo el archivo de certificado que guardado también, ademas el conector https de tomcat lo va solicitar y asi me aseguro que tenga problemas de permisos ni para encontrar la ruta del mismo.
5. Configurar tomcat para que use el archivo certificado
Nos vamos a la carpeta conf de tomcat antes descrita y buscamos el archivo : server.xml
localizamos la entrada que se refiere al puerto de acceso a http (8080) y https: (8443)
En el primero re dirijo el trafico al puerto de https
<Connector connectionTimeout="20000"
maxThreads="1000"
port="80"
protocol="org.apache.coyote.http11.Http11NioProtocol"
compression="on"
compressionMinSize="1024"
noCompressionUserAgent="gozilla, traviata"
compressableMimeType="text/html,text/xml,text/plain,text/css,application/javascript,application/json,text/javascript"
URIEncoding="UTF-8"
redirectPort="6443"/>
En este abro el puerto https y asigno el certificado myDominio.com-co.p12 y con la clave del almacén de claves (myclave1234), observar que el acceso al archivo es una dirección relativa a tomcat en la carpeta conf/
<Connector
protocol="org.apache.coyote.http11.Http11NioProtocol"
port="8443" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="conf/www.miDominio.com.co.p12"
keystorePass="myclave1234"
clientAuth="false" sslProtocol="TLS"/>
Para redirigir el trafico de http a https, debemomos modificar el archivo web.xml de la carpeta conf/ insertando las siguientes lineas al finalizar el cuerpo de etiquetas antes de </web-app>
<security-constraint>
<web-resource-collection>
<web-resource-name>Entire Application</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
Configurar varios dominios con un solo certificado SSL en Nginx Link:https://cac9999.blogspot.com/2021/03/varios-dominios-bajo-un-solo.html
6. Para probar que todo quedo bien.
a. reinicie su servidor tomcart.
b. ingrese a la barra de su navegador su dominio (www.mydominio,com.co)
si todo funcionado debe parecer el candado de seguridad sin ninguna advertencia de seguridad.
c. Las siguientes paginas permiten hacer una verificación del estado del chttps://cac9999.blogspot.com/2021/03/varios-dominios-bajo-un-solo.htmlertificado
https://ssltools.godaddy.com/views/certChecker
https://www.geocerts.com/ssl-checker
Referencia del documento: https://tomcat.apache.org/tomcat-9.0-doc/ssl-howto.html
Comentarios
Publicar un comentario