Ayuda sobre productos BOLD:
Configuración de conexión HTTPS (IIS y Tomcat)
En general se deberá siempre dejar configurados los accesos por https en las instalaciones de PRO. De hecho lo mejor dejarlo así en el mismo momento que se instala PRO.
Para configurar la conexión HTTPS en ambos servidores necesitaremos un certificado asociado a un nombre de dominio DNS, de forma que luega se pueda referenciar el servidor similar a: https://nombre_de_dominio_del_certificado.com. Este hostname será el mismo para acceder al servidor ya se acceda desde dentro de la red como desde Internet.
Preferentemente en formato .pfx y se necesita la contraseña para poder extraer la clave privada del mismo.
Con la información de este artículo, se pueden renovar certificados previamente instalados.
Configuración de Tomcat
En una instalación local, el detalle de la configuración HTTPS está normalmente en: http://localhost:8080/docs/ssl-howto.html. Los pasos suelen ser:
A. Preparación del keystore con Portecle
Nota 1: La herramienta Portecle se habrá suministrado con el SW base necesario durante el proceso de instalación.
Nota 2: Otra alternativa válida es : https://keystore-explorer.org/
Para acceder Portecle abriremos una ventana de comandos y nos colocaremos en la carpeta donde esté ubicado el Portecle, después ejecutaremos el portecle.jar desde la ubicación del java. Habitualmente:
cd "C:\Program Files\Java\jre1.8.0_351\bin"
java.exe -jar "C:\portecle-1.7\portecle.jar"
Una vez abierto Portecle abrir File -> Open Keystore File y buscar fichero keystore.jks en:
C:\apache-tomcat-8.5.50\conf
- Crear el fichero de claves (java keystore) donde se guardarán los certificados del sitio web (normalmente uno). Para ello usaremos la herramienta portecle:
- File –> New keystore, seleccionar formato JKS.
- Importar el certificado del hostname a asegurar, por ejemplo del fichero .pfx que se nos proporcione: Tools –> Import Key Pair. Nos pedirá el pwd que nos hayan dado protege este certificado. A continuación ya podremos escogerlo.
- Cada certificado del keystore lleva asociado un “alias”, por defecto el tomcat busca el certificado con el alias “tomcat”. Será el que pondremos.
- A continuación el portecle nos pide un pwd para el proteger el acceso a estos certificados, por convención ponemos “changeit”. Ya veremos el nuevo certificado en la lista.
- Grabamos el nuevo keystore escogiendo File —> Save. Nos pedirá que añadamos otro pwd para proteger el keystore, ponemos “changeit” otra vez (por ejemplo). Y lo grabamos en la carpeta que sea. Un buen sitio puede ser la carpeta conf del Tomcat: C:\apache-tomcat-8.5.50\conf
Nota importante: vale la pena eliminar el resto de entradas existentes en el keystore, dejando únicamente la nueva que hemos importado, para evitar confusiones en el futuro (hacer una copia anrtes por si acaso).
B. Configuración del Tomcat
- Habilitar el conector del puerto https por defecto 8443, descomentar en el fichero C:\apache-tomcat-8.5.50\conf\server.xml el nodo Connector correspondiente e indicar la ubicación del fichero de claves. Por ejemplo podría quedar así (mikeystore.jks es el almacén de claves creado antes con el portecle):
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="C:\Proyectos\Clientes\test\test_certificados\mikeystore.jks"
type="RSA" />
</SSLHostConfig>
</Connector>
2. Por último ya podemos reiniciar el tomcat y ya deberíamos poder acceder usando https. Verificar que el acceso sea válido, normalmente será algo como: https://nombre_de_dominio_del_certificado.com:8443/portal
Nota 1: recordar que siempre podemos hacer todas esta pruebas en local simplemente añadiendo el hostname que estamos probando con https al fichero C:\Windows\System32\drivers\etc\hosts, entonces podremos abrir un browser de incógnito y probar que el certificado es correcto y todo funcionará igual que en su destino final, simplemente llevándonos el keystore y aplicando la misma configuración en esa instalación de Tomcat.
Nota 2: si no arranca puede ser que el puerto en cuestión ya esté ocupado (para saber los puertos ocupados tenemos la herramienta (como administrador para verlo todo) que nos indicará todos los puertos ocupados y qué procesos los están usando: netstat -a -b
IIS (Internet Information server): Instalación del certificado para usar HTTPS
En el nodo raiz del IIS acceder a Server Certificates, e importar el certificado .pfx (necesitaremos el pwd para acceder a la clave privada).
Después en el nodo Sites -> Default Web Site añadir -> Bindings (enlaces) la conexión https en un puerto que tengamos libre (normalmente el 443 se usa para el portal se suele usar el 8443).
Verificar que el acceso sea válido: https://nombre_de_dominio_del_certificado.com/gpsnode
Reconfiguración de URL de gpsnode y portal
Una vez configurado el certificado es necesario revisar las URL que se encuentren configuradas en el archivo WPServerCfg.ini bajo las entradas URLProduction (portal) y URLFullWebProduction (web/gpsnode). si se han de cambiar será necesario reiniciar tanto el backend (ISAPI) como el portal-java.
Anexo 1. Herramientas de gestión de certificados y claves
La forma más sencilla es manipular el keystore con el portecle, sin embargo, existen un par de herramientas que suelen encontrarse en casi cualquier servidor que son el openssl y el keytool, ambas permiten la manipulación de estas cosas. El keytool lo incluye cualquier instalación de java (ej.: “C:\Program Files\Java\jre7\bin\keytool”). A continuación se listan algunos comandos útiles (añadir -keystore <archivo_almacen.jks) a todos los comandos):
Volcar la lista de claves del almacén
.\keytool -list -storepass changeit
Ver el detalle de un certificado del almacén que tiene el alias “tomcat”
.\keytool -list -v -alias tomcat -storepass changeit
Borrar un certificado por su alias
.\keytool -delete -v -alias tomcat -storepass changeit
Renombrar el alias de un certificado
.\keytool -changealias -v -alias tomcat -storepass changeit
Generación del certificado .pfx a partir de archivos pem (o archivos de texto de claves)
Frecuentemente nos dan los ficheros de texto con las claves pública y privada dentro y hemos de obtener a partir de ellos el fichero .pfx que es el que usamos normalmente para configurar:
.\openssl.exe pkcs12 -export -out ..\NUEVO.pfx -inkey ..\privateKey.key -in ..\certificado_publico.crt
El comando anterior “escupe” un .pfx partiendo de los ficheros claves privada (.key) y certificado (clave pública .crt).
Creación de clave privada y certificado locales
.\openssl req -newkey rsa:2048 -nodes -keyout privateKey.pem -x509 -out certificate.pem
Obtención de clave pública
.\openssl rsa -pubout -in privateKey.pem -out publicKey.pem
Conversión a PKCS12
.\openssl pkcs12 -inkey privateKey.pem -in certificate.pem -export -out certificate.p12
Conversión a Java Key Store
.\keytool -genkey -keyalg RSA -alias myStore -keystore keystore.jks .\keytool -delete -alias myStore -keystore keystore.jks
Importación de PKCS12 a Java Key Store
.\keytool -v -importkeystore -srckeystore certificate.p12 -srcstoretype PKCS12 -destkeystore keystore.jks -deststoretype JKS
Conversión de pfx a pem
.\openssl pkcs12 -in key.pfx -nocerts -out privateKey.pem
Extracción del certificado
.\openssl pkcs12 -in key.pfx -clcerts -nokeys -out certificate.pem
Obtención del password de la clave privada extraida:
.\openssl rsa -in privateKey.pem -out server.key