Habilitación de SSL para comunicaciones de agente

Los componentes de Build Forge están configurados de forma predeterminada para que utilicen determinados puertos y valores de seguridad cuando SSL está habilitada.

Para habilitar la comunicación de SSL entre Build Forge y los agentes, deberá hacer lo siguiente:

Configuración de agentes para SSL

  1. Si el agente está en ejecución, deténgalo.
  2. Coloque los archivos .PEM de los certificados en el directorio de instalación root del agente.

    Para implementar y probar SSL rápidamente, puede copiar los archivos .PEM de la instalación de Build Forge. Los archivos se encuentran en <bfinstall>/keystore.

    El método recomendado para SSL es utilizar un certificado independiente para cada agente:

    1. Cree archivos de almacén de claves independientes (.PEM) para cada una de las siguientes opciones:
      • clave privada (clave)
      • certificado público para la clave privada (cert)
      • firmantes de confianza (ca o entidad emisora de certificados)
    2. Si utiliza un certificado único para el agente (en lugar de una copia del certificado del motor de Build Forge), añada el certificado del agente en el almacén de claves de la entidad emisora de certificados para Build Forge, <bfinstall>/keystore/buildForgeCA.pem. Si ejecuta varios motores (motores redundantes), añada el certificado a cada almacén de claves de la entidad emisora de certificados del motor.
    3. Si está utilizando kdb en un System z, utilice gskkeyman para crear el kdb.
    4. Si está utilizando un conjunto de claves SAF (System Authorization Facility), utilice RACF para crear el conjunto de claves y para conectar el certificado con el conjunto de claves.
  3. Edite BFAgent.conf. Las siguientes líneas se desconectan en el archivo. Elimine el prefijo de comentario.
    ssl_key_location buildForgeKey.pem
    ssl_key_password contraseña
    ssl_cert_location buildForgeCert.pem
    ssl_ca_location buildForgeCA.pem
    ssl_protocol TLSv1
    ssl_cipher_group ALL

    La contraseña es para el almacén de claves buildForgeKey.pem. Si desea cifrarlo, consulte Cifrado de contraseñas en buildforge.conf y bfagent.conf.

    Si desea solicitar autenticación de clientes al realizar una conexión con el agente, quite el comentario de la siguiente línea:
    ssl_client_authentication true
    Este valor requiere que el certificado del motor se añada al almacén de claves de la entidad emisora de certificados, buildForgeCA.pem.
    Si desea utilizar cifrados específicos, quite el comentario de esta línea y añada la lista de cifrados:
    ssl_cipher_override cipher_list
  4. Para agentes que se ejecutan en System z, edite BFAgent.conf y descomente las siguientes líneas:
    gsk_ssl_key_location <raíz/cert SAF>
    gsk_ssl_key_location /etc/key.kdb
    gsk_ssl_kdb_password <contraseña>
    gsk_keyring_label <etiqueta_certificado>
    gsk_ssl_protocol ALL
    gsk_ssl_cipher_v2 6321
    gsk_ssl_cipher_v3 0906030201
    gsk_ssl_client_authentication true
    gsk_password_encrypt false

    Utilice únicamente una gsk_ssl_key_location. Elija si utilizará un conjunto de claves SAF o kdb. Un conjunto de claves SAF se especifica con <id_usuario>/<conjunto_claves>.

  5. Inicie el agente. El agente debe estar ejecutándose para probar la conexión desde la consola.

Habilitación de SSL en definiciones de servidor

La consola utiliza definiciones de servidor para conectarse a los agentes.

Con cada definición de servidor que se conecte al agente con SSL habilitada, haga lo siguiente:

Resolución de problemas de comunicación de SSL con agentes

La siguiente lista de comprobación describe problemas comunes al habilitar SSL:

Habilitación de mensajes de depuración

Puede habilitar la depuración en el motor y el agente. Cuando está habilitada la depuración, se produce una salida detallada adicional que puede ayudarle a identificar problemas en la configuración.

Ejemplo de salida de depuración de motor de una conexión SSL satisfactoria

Un motor produce la siguiente salida cuando se conecta satisfactoriamente a un agente.


SSL_ca_file: ./keystore/buildForgeCA.pem
SSL_cert_file: ./keystore/buildForgeCert.pem
SSL_key_file: ./keystore/buildForgeKey.pem
SSL_verify_mode: 0x01
SSL_version: TLSv1
SSL_cipher_list: ALL
SSL_use_cert: 1
Making as SSL connection using socket IO::Socket::INET=GLOB(0x1e8f0f4).
SSL connection to agent.
DEBUG: .../IO/Socket/SSL.pm:1387: new ctx 80662848
DEBUG: .../IO/Socket/SSL.pm:880: dont start handshake: IO::Socket::SSL=GLOB(0x1e8f0f4)
DEBUG: .../IO/Socket/SSL.pm:284: ssl handshake not started
DEBUG: .../IO/Socket/SSL.pm:327: Net::SSLeay::connect -> 1
DEBUG: .../IO/Socket/SSL.pm:382: ssl handshake done
Socket is of type: ref(IO::Socket::SSL=GLOB(0x1e8f0f4))
ReadyLine: 202 HELLO TLS - BuildForge Agent v_VERSION_
.
Storing Agent Version [999.999.999.999-999-9999] for [08974C8E-6C3B-1014-972D-D9B2901D9F42]
cmd ping
username pbirk
encpass c1713f4a31af3f1300f7b2414a24559c4d6097e07310cf9c412e
go
Sending agent request...

Ejemplo de salida de depuración de agente de una conexión SSL satisfactoria

Un agente suele producir la siguiente salida al establecer una conexión SSL.


[2256] main.c          : 409: === NEW AGENT ===
[2256] io.c            : 264: In start_SSL
[2256] io.c            :  89: Key location: buildForgeKey.pem
[2256] bfpwdlocloader.c: 134: Looking for password locator: ssl_key_password_locator
[2256] bfpwdlocloader.c: 244: Looking for password for prop 
                              ssl_key_password from bfagent.conf.
[2256] bfcryptloader.c : 202: Loading password encryption module.
[2256] bfcryptloader.c : 276: Password encryption property 
                              password_encrypt_module is not configured.
[2256] bfcryptloader.c : 539: Password decoded.
[2256] io.c            :  98: Cert location: buildForgeCert.pem
[2256] bfpwdlocloader.c: 134: Looking for password locator: 
                              ssl_cert_password_locator
[2256] bfpwdlocloader.c: 244: Looking for password for prop 
                              ssl_cert_password from bfagent.conf.
[2256] io.c            : 153: Setting key password in default userdata.
[2256] io.c            : 160: Getting private key from PEM.
[2256] io.c            : 166: Checking private key from PEM.
[2256] io.c            : 172: Getting CA store information.
[2256] bfpwdlocloader.c: 134: Looking for password locator: 
                              ssl_ca_password_locator
[2256] bfpwdlocloader.c: 244: Looking for password for prop 
                              ssl_ca_password from bfagent.conf.
[2256] io.c            : 178: CA location: buildForgeCert.pem
[2256] io.c            : 184: Checking the CA store.
[2256] io.c            : 230: Returning from init_CTX.
[2256] io.c            : 281: Calling SSL_new
[2256] io.c            : 294: Calling SSL_accept.
[2256] io.c            : 346: Cipher chosen: AES256-SHA
[2256] io.c            : 367: ssl_state = SS_CERTIFIED

Salida de ejemplo para contraseña de almacén de claves errónea en el agente

Si la contraseña del almacén de claves configurada en el agente es errónea, aparecerá tanto en la salida del motor como en la salida del agente.

Salida del motor (pasaje):


SSL_use_cert: 1
Making as SSL connection using socket IO::Socket::INET=GLOB(0x1e8f0f4).
SSL connection to agent.
DEBUG: .../IO/Socket/SSL.pm:1387: new ctx 80662848
DEBUG: .../IO/Socket/SSL.pm:880: dont start handshake: IO::Socket::SSL=GLOB(0x1e8f0f4)
DEBUG: .../IO/Socket/SSL.pm:284: ssl handshake not started
DEBUG: .../IO/Socket/SSL.pm:327: Net::SSLeay::connect -> -1
DEBUG: .../IO/Socket/SSL.pm:1135: SSL connect attempt failed with unknown error
error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number

DEBUG: .../IO/Socket/SSL.pm:333: fatal SSL error: SSL connect attempt failed with unknown error
error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
DEBUG: .../IO/Socket/SSL.pm:1422: free ctx 80662848 open=80662848 80566656
DEBUG: .../IO/Socket/SSL.pm:1425: OK free ctx 80662848

Salida de agente (pasaje):


[    5272] io.c            :  98: Cert location: buildForgeCert.pem
[    5272] bfpwdlocloader.c: 134: Looking for password locator: ssl_cert_passwor
d_locator
[    5272] bfpwdlocloader.c: 244: Looking for password for prop ssl_cert_password from bfagent.conf.
[    5272] io.c            : 153: Setting key password in default userdata.
[    5272] io.c            : 160: Getting private key from PEM.
[    5272] io.c            : 218: Failure reason: SSLErrorBadPKeyFile
[    5272] io.c            : 221: OpenSSL error string: error:00000000:lib(0):func(0):reason(0)
[    5272] io.c            : 281: Calling SSL_new
[    5272] platform.c      :2693: platform_release_credentials
[    5272] main.c          : 412: --- EXITING ---

Códigos de error en la salida del agente

La lista incluye algunos de los otros códigos de error con los que puede encontrarse y sus causas:


Comentarios