에이전트 통신에 SSL 사용

SSL이 사용 가능한 경우 기본적으로 Build Forge 컴포넌트는 특정 포트와 보안 설정을 사용하도록 설정됩니다.

Build Forge와 에이전트 간에 SSL 통신을 사용하려면 다음을 수행해야 합니다.

SSL을 위한 에이전트 구성

  1. 에이전트가 실행 중인 경우 해당 에이전트를 중지하십시오.
  2. 인증을 위한 .PEM 파일을 에이전트의 루트 설치 디렉토리에 배치하십시오.

    SSL을 빠르게 구현하고 테스트하려면 Build Forge 설치에서 .PEM 파일을 복사할 수 있습니다. 파일은 <bfinstall>/keystore에 있습니다.

    SSL을 위한 우수 사례는 각 에이전트에 개별 인증을 사용하는 것입니다.

    1. 다음에 대해 각각 개별 키 저장소 파일(.PEM)을 작성합니다.
      • 개인용 키(key)
      • 개인용 키(cert)의 공용 인증서
      • 신뢰할 수 있는 서명자(CA 또는 인증 권한)
    2. Build Forge 엔진의 인증서 복사본 대신 에이전트의 고유 인증서를 사용하는 경우 Build Forge의 CA(Certificate Authority) 키 저장소인 <bfinstall>/keystore/buildForgeCA.pem에 에이전트의 인증서를 추가합니다. 다중 엔진(중복 엔진)을 실행 중인 경우 각 엔진의 CA(Certificate Authority) 키 저장소에 인증서를 추가합니다.
    3. System z에서 kdb를 사용 중인 경우 gskkeyman을 사용하여 kdb를 작성하십시오.
    4. SAF(System Authorization Facility) 키 링을 사용하는 경우 RACF를 사용하여 키 링을 작성하고 인증서를 키 링에 연결하십시오.
  3. BFAgent.conf를 편집하십시오. 파일에서 다음 행이 주석 처리됩니다. 주석 접두부를 제거하십시오.
    ssl_key_location buildForgeKey.pem
    ssl_key_password password
    ssl_cert_location buildForgeCert.pem
    ssl_ca_location buildForgeCA.pem
    ssl_protocol TLSv1
    ssl_cipher_group ALL

    비밀번호는 buildForgeKey.pem 키 저장소에 사용됩니다. 비밀번호를 암호화하려면 buildforge.conf 및 bfagent.conf에서 비밀번호 암호화의 내용을 참조하십시오.

    에이전트에 연결할 때 클라이언트 인증이 필요한 경우 다음 행의 주석을 해제합니다.
    ssl_client_authentication true
    이 설정을 수행하려면 엔진의 CA(Certificate Authority) 키 저장소인 buildForgeCA.pem에 엔진 인증을 추가해야 합니다.
    특정 암호를 사용하려는 경우 이 행의 주석을 해제하고 암호 목록을 추가합니다.
    ssl_cipher_override cipher_list
  4. System z에서 실행 중인 에이전트의 경우 BFAgent.conf를 편집하고 다음 행의 주석을 해제하십시오.
    gsk_ssl_key_location <root/cert SAF>
    gsk_ssl_key_location /etc/key.kdb
    gsk_ssl_kdb_password <password>
    gsk_keyring_label <certificate label>
    gsk_ssl_protocol ALL
    gsk_ssl_cipher_v2 6321
    gsk_ssl_cipher_v3 0906030201
    gsk_ssl_client_authentication true
    gsk_password_encrypt false

    하나의 gsk_ssl_key_location만 사용하십시오. SAF 키 링 또는 kdb를 선택할 수 있습니다. SAF 키 링은 <userid>/<keyring>에서 지정합니다.

  5. 에이전트를 시작하십시오. 콘솔에서 연결을 테스트하려면 에이전트가 실행 중이어야 합니다.

서버 정의에 SSL 사용

콘솔에서는 서버 정의를 사용하여 에이전트에 연결합니다.

SSL 사용 에이전트에 연결되는 각 서버 정의에 다음을 수행하십시오.

에이전트와의 SSL 통신 문제점 해결

다음 점검 목록은 SSL을 사용할 때의 공통적인 문제에 대해 설명합니다.

디버깅 메시지 사용

엔진 및 에이전트에서 디버깅을 사용할 수 있습니다. 디버깅을 사용할 수 있는 경우 구성에서의 문제점을 식별할 수 있는 자세한 추가 출력이 생성됩니다.

성공적인 SSL 연결을 위한 예제 엔진 디버그 출력

엔진이 에이전트에 성공적으로 연결되면 다음과 같은 출력이 생성됩니다.


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
goSending agent request...

성공적인 SSL 연결을 위한 예제 에이전트 디버그 출력

정상적으로 실행되는 에이전트에서 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

에이전트에서 잘못된 키 저장소 비밀번호의 예제 출력

에이전트 측에 구성된 키 저장소 비밀번호가 잘못된 경우 엔진과 에이전트 출력에 모두 표시됩니다.

엔진 출력(예제):


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

에이전트 출력(예제):


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

에이전트 출력에서 오류 코드

이 목록에는 발생할 수 있는 몇 가지 기타 오류 코드와 원인이 포함되어 있습니다.


피드백