Activation de SSL pour les communications agent

Les composants Build Forge sont configurés par défaut pour utiliser certains ports et paramètres de sécurité lorsque SSL est activé.

Pour activer la communication SSL entre Build Forge et les agents, vous devez procéder comme suit :

Configuration des agents pour SSL

  1. Si l'agent est en cours d'exécution, arrêtez-le.
  2. Placez les fichiers .PEM pour les certificats dans le répertoire d'installation principal de l'agent.

    Pour implémenter et tester SSL rapidement, vous pouvez copier les fichiers .PEM à partir de l'installation Build Forge. Ces fichiers se trouvent dans <rép_install_bf>/keystore.

    La meilleure pratique pour SSL est d'utiliser un certificat distinct pour chaque agent :

    1. Créez un fichier de clés séparé (.PEM) pour chaque élément suivant :
      • clé privée (clé)
      • certificat public pour la clé privée (cert)
      • signataires de confiance (autorité de certification)
    2. Si vous utilisez un certificat unique pour l'agent (au lieu d'une copie du certificat du moteur Build Forge), ajoutez-le au fichier de clés de l'autorité certifiée pour Build Forge, <rép_install_bf>/keystore/buildForgeCA.pem. Si vous exécutez plusieurs moteurs (moteurs redondants), ajoutez le certificat au fichier de clés de l'autorité de certification de chaque moteur.
    3. Si vous utilisez un fichier kdb sur System z, créez-le à l'aide de gskkeyman.
    4. Si vous utilisez un fichier de clés SAF (System Authorization Facility, fonction d'autorisation système), créez-le à l'aide de RACF, qui assure également sa connexion au certificat.
  3. Modifiez BFAgent.conf. Les lignes suivantes sont commentées dans le fichier. Supprimez le préfixe de commentaire.
    ssl_key_location buildForgeKey.pem
    ssl_key_password motdepasse
    ssl_cert_location buildForgeCert.pem
    ssl_ca_location buildForgeCA.pem
    ssl_protocol TLSv1
    ssl_cipher_group ALL

    Le motdepasse est celui du fichier de clés buildForgeKey.pem. Si vous souhaitez le chiffrer, voir Chiffrement des mots de passe dans buildforge.conf et bfagent.conf.

    Si vous voulez demander l'authentification client lors de l'établissement d'une connexion à l'agent, supprimez la mise en commentaire de la ligne suivante :
    ssl_client_authentication true
    Ce paramètre requiert l'ajout du certificat du moteur dans le fichier de clés d'autorité de certification de l'agent, buildForgeCA.pem.
    Si vous souhaitez utiliser des chiffrements spécifiques, supprimez la mise en commentaire de cette ligne et ajoutez votre liste de chiffrements :
    ssl_cipher_override liste_chiffrements
  4. Pour les agents exécutés sur System z, éditez le fichier BFAgent.conf et supprimez la mise en commentaire des lignes suivantes :
    gsk_ssl_key_location <root/cert SAF>
    gsk_ssl_key_location /etc/key.kdb
    gsk_ssl_kdb_password <mot de passe>
    gsk_keyring_label <label de certificat>
    gsk_ssl_protocol ALL
    gsk_ssl_cipher_v2 6321
    gsk_ssl_cipher_v3 0906030201
    gsk_ssl_client_authentication true
    gsk_password_encrypt false

    Utilisez une seule occurrence de gsk_ssl_key_location. Vous pouvez sélectionner soit un fichier de clés SAF, soit un fichier kdb. Un fichier de clés SAF est spécifié par <userid>/<keyring>.

  5. Démarrez l'agent. Il doit être en cours d'exécution pour tester la connexion à partir de la console.

Activation de SSL dans les définitions de serveur

La console utilise des définitions de serveur pour se connecter aux agents.

Pour chaque définition de serveur connectée à un agent activé pour SSL, procédez comme suit :

Résolution des problèmes de communication SSL avec les agents

La liste de contrôle suivante décrit les problèmes communs rencontrés lors de l'activation de SSL :

Activation des messages de débogage

Vous pouvez activer le débogage dans le moteur et dans l'agent. Lorsqu'il est activé, des sorties détaillées supplémentaires sont générées pour vous aider à identifier les problèmes de configuration.

Exemple de sortie de débogage de moteur pour une connexion SSL réussie

Un moteur génère la sortie suivante lorsque sa connexion à un agent aboutit.


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...

Exemple de sortie de débogage de l'agent pour une connexion SSL réussie

Un moteur exécuté normalement génère la sortie suivante lorsqu'il établit une connexion 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

Exemple de sortie pour un mot de passe de fichier de clés incorrect sur l'agent

Si le mot de passe de fichier de clés configuré du côté agent est incorrect, il apparaît dans la sortie du moteur et dans celle de l'agent.

Sortie du moteur (extrait) :


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

Sortie de l'agent (extrait) :


[    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 ---

Codes d'erreur dans la sortie de l'agent

Cette liste inclut certains autres codes d'erreur que vous pouvez rencontrer ainsi que leurs causes :


Commentaires en retour