SSL이 사용 가능한 경우, 기본적으로 Build Forge® 컴포넌트는 특정 포트와 보안 설정을 사용하도록 설정됩니다.
Build Forge®와 에이전트 간에 SSL 통신을 사용하려면, 다음을 수행해야 합니다.
openssl pkcs12 -in buildForgeKeyStore.p12 -passin pass:<bfpassword> -passout pass:<bfpassword> -out buildForgeKey.pem
.SSL을 위한 우수 사례는 각 에이전트에 개별 인증을 사용하는 것입니다.
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
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>에서 지정합니다.
콘솔에서는 서버 정의를 사용하여 에이전트에 연결합니다.
SSL 사용 에이전트에 연결되는 각 서버 정의에 다음을 수행하십시오.
다음 점검 목록에서는 SSL을 사용할 경우의 공통 문제에 대해 설명합니다.
<bfinstall>/keystore/buildForgeCA.pem
BFDEBUG_SECURITY=1
cd <bfinstall>/rc
./buildforge start
엔진의 출력이 <bfinstall>/log의 엔진 로그 파일로 이동됩니다. activity_log bfagent.log
이 예제에서는
에이전트가 bfagent.log에 출력을 씁니다.
다른 파일 이름을 지정할 수 있습니다. 엔진이 에이전트에 성공적으로 연결되면, 다음과 같은 출력이 생성됩니다.
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 연결이 확립되는 경우, 다음과 같은 출력이 생성됩니다.
[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 ---
이 목록에는 발생할 수 있는 일부 기타 오류 코드와 원인이 포함되어 있습니다.