Instalación del Certificado SSL
La instalación de un certificado SSL es obligatoria para que la herramienta Run2biz funcione. Hay dos maneras de configurar un certificado SSL en nuestros escenarios:
- Con la generación y el uso de autofirma.
- Con el uso de un certificado válido con una cadena de certificación válida.
Generación y uso de un certificado autofirmado por Java
La forma de acceder a Run2biz cambia el modo en que se genera el certificado SSL. Hay dos posibilidades para acceder a la URL del sistema:
- A través del direccionamiento IP en el formato https://ENDERECO_IP
La generación del certificado en ambos casos es un poco diferente. A continuación se presenta el procedimiento válido para ambos casos.
Creación de un certificado para una entrada DNS
A continuación se muestra el comando para generar un certificado SSL para una entrada DNS llamada 4biz.example.com. Recuerde cambiar los siguientes parámetros:
- KEY_NAME: Un nombre para la clave/archivo. Ejemplo 4bizV1.
- 4biz.example.com: Cambie a la entrada DNS que creó para su aplicación.
- validity 365: Tiempo de validez de la clave en días. Defina este valor según los requisitos de seguridad interna de su institución. Una vez alcanzado el límite de tiempo, el certificado expirará y será necesario generar otro. Defina el tiempo que le parezca más adecuado. En el ejemplo, el certificado tiene una validez de 1 año y 365 días).
- PASSWORD: Una contraseña para el certificado. Ejemplo password123456
/opt/jdk/bin/keytool -genkey -alias KEY_NAME -keyalg RSA -keystore /opt/wildfly/standalone/configuration/KEY_NAME.keystore -ext san=dns:4biz.example.com -validity 365 -storepass PASSWORDCuando se ejecuta el comando, se formularán una serie de preguntas, que pueden ser contestadas o no (la compleción es opcional). Si no quiere rellenar la información, escriba [enter] para todas menos la última, que deberá ser contestado con "yes".
/opt/jdk/bin/keytool -genkey -alias 4bizV1 -keyalg RSA -keystore /opt/wildfly/standalone/configuration/4bizV1.keystore -ext san=dns:4biz.example.com -validity 365 -storepass password123456Salida:
[root@server /tmp]# /opt/jdk/bin/keytool -genkey -alias 4bizV1 -keyalg RSA -keystore /opt/wildfly/standalone/configuration/4bizV1.keystore -ext san=dns:4biz.example.com -validity 365 -storepass password123456
What is your first and last name?
[Unknown]:
What is the name of your organizational unit?
[Unknown]:
What is the name of your organization?
[Unknown]:
What is the name of your City or Locality?
[Unknown]:
What is the name of your State or Province?
[Unknown]:
What is the two-letter country code for this unit?
[Unknown]:
Is CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown correct?
[no]: yes
Enter key password for <4bizV1>
(RETURN if same as keystore password):
Re-enter new password:
Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore /opt/wildfly/standalone/configuration/4bizV1.keystore -destkeystore /opt/wildfly/standalone/configuration/4bizV1.keystore -deststoretype pkcs12".
[root@server /tmp]#
Creación de un certificado para una dirección IP
A continuación se muestra el comando para generar un certificado SSL para un acceso que se realiza directo por IP, por ejemplo 192.168.0.40. Recuerde cambiar los siguientes parámetros a continuación:
- KEY_NAME: Un nombre para la clave/archivo. Ejemplo 4bizV1.
- 192.168.0.40: Cambie a la entrada DNS que creó para su aplicación.
- validity 365: Tiempo de validez de la clave en días. Defina este valor según los requisitos de seguridad interna de su institución. Una vez alcanzado el límite de tiempo, el certificado expirará y será necesario generar otro. Defina el tiempo que le parezca más adecuado. En el ejemplo, el certificado tiene una validez de 1 año y 365 días).
- PASSWORD: Una contraseña para el certificado. Ejemplo password123456
/opt/jdk/bin/keytool -genkey -alias KEY_NAME -keyalg RSA -keystore /opt/wildfly/standalone/configuration/KEY_NAME.keystore -ext san=ip:192.168.0.40 -validity 365 -storepass PASSWORDCuando se ejecuta el comando, se formularán una serie de preguntas, que pueden ser contestadas o no (la compleción es opcional). Si no quiere rellenar la información, escriba [enter] para todas menos la última, que deberá ser contestado con "yes".
[root@server /tmp]# /opt/jdk/bin/keytool -genkey -alias 4bizV1 -keyalg RSA -keystore /opt/wildfly/standalone/configuration/4bizV1.keystore -ext san=ip:192.168.0.40 -validity 365 -storepass password123456
What is your first and last name?
[Unknown]:
What is the name of your organizational unit?
[Unknown]:
What is the name of your organization?
[Unknown]:
What is the name of your City or Locality?
[Unknown]:
What is the name of your State or Province?
[Unknown]:
What is the two-letter country code for this unit?
[Unknown]:
Is CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown correct?
[no]: yes
Enter key password for <4bizV1>
(RETURN if same as keystore password):
Re-enter new password:
Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore /opt/wildfly/standalone/configuration/4bizV1.keystore -destkeystore /opt/wildfly/standalone/configuration/4bizV1.keystore -deststoretype pkcs12".
[root@server /tmp]#
Generación del archivo .cer e importación en cacerts
El siguiente paso es la generación del archivo de certificado .cer. Para generar el archivo, ejecute el comando de abajo sustituyendo los valores (como el nombre del keystore y la hora) de acuerdo con el keystore generado en los comandos anteriores. Al ejecutar el comando, se le pedirá la contraseña generada en los pasos anteriores.
/opt/jdk/bin/keytool -export -alias 4bizV1 -keystore /opt/wildfly/standalone/configuration/4bizV1.keystore -validity 365 -file /opt/wildfly/standalone/configuration/4bizV1.cerSalida:
[root@server /tmp]# /opt/jdk/bin/keytool -export -alias 4bizV1 -keystore /opt/wildfly/standalone/configuration/4bizV1.keystore -validity 365 -file /opt/wildfly/standalone/configuration/4bizV1.cer
Enter keystore password:
Certificate stored in file </opt/wildfly/standalone/configuration/4bizV1.cer>
Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore /opt/wildfly/standalone/configuration/4bizV1.keystore -destkeystore /opt/wildfly/standalone/configuration/4bizV1.keystore -deststoretype pkcs12".
[root@server /tmp]#Ahora es necesario importar el archivo .cer en el cacerts de Java. Ejecute el comando de abajo para realizar la importación. Al ejecutar el comando, se le pedirá la contraseña de cacerts (la contraseña por defecto de la aplicación Java, si no la ha cambiado, es changeit).
Cambie los nombres de los archivos de acuerdo con lo que se generó anteriormente. Al final del comando, responda [yes] para continuar.
/opt/jdk/bin/keytool -keystore /opt/jdk/jre/lib/security/cacerts -importcert -alias "4bizV1" -file /opt/wildfly/standalone/configuration/4bizV1.cerSalida:
[root@server /tmp]# /opt/jdk/bin/keytool -keystore /opt/jdk/jre/lib/security/cacerts -importcert -alias "4bizV1" -file /opt/wildfly/standalone/configuration/4bizV1.cer
Enter keystore password:
Owner: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
Issuer: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
Serial number: 73bf74b5
Valid from: Thu Nov 14 14:17:45 UTC 2019 until: Fri Nov 13 14:17:45 UTC 2020
Certificate fingerprints:
MD5: 8E:55:89:17:76:F7:3D:20:97:C0:66:ED:3A:55:C6:BA
SHA1: F2:4D:DC:3F:DE:6A:F1:60:39:32:BC:B6:45:50:B4:BE:2C:D7:24:38
SHA256: EB:A8:05:79:9C:CF:2C:4B:A1:C1:23:97:B8:5E:CC:97:13:E3:D9:3E:45:35:A5:19:1A:4D:2A:09:80:6E:5D:2A
Signature algorithm name: SHA256withRSA
Subject Public Key Algorithm: 2048-bit RSA key
Version: 3
Extensions:
#1: ObjectId: 2.5.29.17 Criticality=false
SubjectAlternativeName [
DNSName: 4biz.example.com
]
#2: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: E0 70 2E CD C2 E7 02 2B 2A F9 B5 1A FA DE CC 5B .p.....+*......[
0010: 40 BB F0 C7 @...
]
]
Trust this certificate? [no]: yes
Certificate was added to keystore
[root@server /tmp]#
Para terminar, sea cual sea la forma elegida, cambie el propietario del keystore a wildfly, sustituyendo el ejemplo de abajo por el nombre de su certificado si lo ha cambiado:
chown wildfly.wildfly /opt/wildfly/standalone/configuration/4bizV1.*Generación del keystore con un certificado válido
Si tiene un certificado válido, con una cadena de certificación válida, debe importar el certificado a Java. Para ello, utilice el comando que aparece a continuación. Recuerda cambiar los siguientes parámetros:
- CERTIFICADO.p12: El nombre de su certificado p12 que debe subir al servidor vía scp.
- ALIAS_CERT: Un apodo (nombre) para el certificado.
- CERTIFICADO.jks: El nombre del archivo de keystore que se generará.
/opt/jdk/bin/keytool -importkeystore -srckeystore CERTIFICADO.p12 -srcstoretype PKCS12 -alias "ALIAS_CERT" -destkeystore CERTIFICADO.jks -deststoretype JKSUna vez generado el archivo keystore, es necesario importarlo a cacerts (mismo procedimiento de importación utilizado en la generación del certificado autofirmado).
Configuración del keystore en wildfly
Acceda a wildfly en el modo CLI y dé los siguientes comandos sustituyendo los valores por los nombres de los archivos creados anteriormente:
/subsystem=undertow/server=default-server/https-listener=https:read-attribute(name=security-realm)
/subsystem=elytron/key-store=citsmartKeyStore:add(path="4bizV1.keystore",relative-to=jboss.server.config.dir,credential-reference={clear-text="password123456"},type=JKS)
/subsystem=elytron/key-manager=citsmartKeyManager:add(key-store=citsmartKeyStore,credential-reference={clear-text="password123456"})
/subsystem=elytron/server-ssl-context=citsmartSSLContext:add(key-manager=citsmartKeyManager,protocols=["TLSv1.2"])
/core-service=management/security-realm=ApplicationRealm/server-identity=ssl:remove
/core-service=management/security-realm=ApplicationRealm/server-identity=ssl:add(keystore-path="4bizV1.keystore", keystore-password-credential-reference={clear-text="password123456"}, keystore-relative-to="jboss.server.config.dir",alias="4bizV1")Vuelva a cargar y salga de la CLI:
[standalone@localhost:9990 /]: reload
[standalone@localhost:9990 /]: quit