Apigee 프라이빗 클라우드용 Edge 4.54.00에서 기본적으로 라우터(Nginx) 및 메시지 프로세서 (Java 21)는 TLSv1.2 및 TLSv1.3을 사용 설정합니다. 비즈니스 요구사항 및 보안
관행에 따라 허용된 프로토콜을 제한하거나 이전 프로토콜을 다시 사용 설정할 수 있습니다. 이 문서에서는 라우터 및 메시지 프로세서에서 북바운드 및 사우스바운드 트래픽의 TLS 프로토콜을 구성하는 방법을 설명합니다.
라우터의 경우 개별 가상 호스트의 프로토콜을 설정할 수도 있습니다. 자세한 내용은 Private Cloud용 API에 대한 TLS 액세스 구성을 참고하세요.
메시지 프로세서의 경우 개별 TargetEndpoint의 프로토콜을 설정할 수 있습니다. 자세한 내용은 Edge에서 백엔드로 TLS 구성 (Cloud 및 프라이빗 클라우드)을 참고하세요.
라우터에서 TLS 프로토콜 설정
다음 속성은 북바운드 통신을 위해 라우터에서 원하는 TLS 프로토콜을 설정하는 데 도움이 됩니다.
라우터에서 TLS 프로토콜을 설정하려면 router.properties
파일에서 속성을 설정합니다.
- 편집기에서
router.properties파일을 엽니다. 파일이 없으면 파일을 만듭니다.vi /opt/apigee/customer/application/router.properties
- 원하는 대로 속성을 설정합니다.
# Possible values are space-delimited list of: TLSv1 TLSv1.1 TLSv1.2 TLSv1.3 conf_load_balancing_load.balancing.driver.server.ssl.protocols=TLSv1.2
- 변경사항을 저장합니다.
- 속성 파일의 소유자가
apigee사용자인지 확인합니다.chown apigee:apigee /opt/apigee/customer/application/router.properties
- 라우터를 다시 시작합니다.
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- Nginx 파일
/opt/nginx/conf.d/0-default.conf을 검사하여 프로토콜이 올바르게 업데이트되었는지 확인합니다.cat /opt/nginx/conf.d/0-default.conf
ssl_protocols의 값이TLSv1.2인지 확인합니다. - 가상 호스트와 함께 양방향 TLS를 사용하는 경우 Private Cloud용 API에 대한 TLS 액세스 구성에 설명된 대로 가상 호스트에서 TLS 프로토콜도 설정해야 합니다.
메시지 프로세서에서 TLS 프로토콜 설정
다음 속성은 사우스바운드 통신을 위해 메시지 프로세서에서 원하는 TLS 프로토콜을 설정하는 데 도움이 됩니다. 이 섹션에서는 사용 중지된 TLS 프로토콜 및 암호화 스위트로 작업하는 방법도 설명합니다.
메시지 프로세서에서 TLS 프로토콜을 설정하려면
message-processor.properties 파일에서 속성을 설정합니다.
- 편집기에서
message-processor.properties파일을 엽니다. 파일이 없으면 파일을 만듭니다.vi /opt/apigee/customer/application/message-processor.properties
- 다음 구문을 사용하여 속성을 구성합니다.
# Possible values are a comma-delimited list of TLSv1, TLSv1.1, TLSv1.2, and TLSv1.3 conf/system.properties+https.protocols=[TLSv1][,TLSv1.1][,TLSv1.2][,TLSv1.3] # Possible values are a comma-delimited list of SSLv3, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3 # SSLv3 is required conf_jvmsecurity_jdk.tls.disabledAlgorithms=SSLv3[,TLSv1][,TLSv1.1][,TLSv1.2][,TLSv1.3] # Specify the ciphers that the Message Processor supports. (You must separate ciphers with a comma.): conf_message-processor-communication_local.http.ssl.ciphers=cipher[,...]
예를 들면 다음과 같습니다.
conf/system.properties+https.protocols=TLSv1.2 conf_jvmsecurity_jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1 conf_message-processor-communication_local.http.ssl.ciphers=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
관련 속성의 전체 목록은 라우터와 메시지 프로세서 간의 TLS 구성을 참고하세요.
- 변경사항을 저장합니다.
- 속성 파일의 소유자가
apigee사용자인지 확인합니다.chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- 메시지 프로세서를 다시 시작합니다.
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- 백엔드와 함께 양방향 TLS를 사용하는 경우 Edge에서 백엔드로 TLS 구성 (Cloud 및 프라이빗 클라우드)에 설명된 대로 가상 호스트에서 TLS 프로토콜을 설정합니다.
이전 암호화 스위트 및 TLS 프로토콜 작업: 이전 암호화 스위트 또는 프로토콜로 작업하려면 다음 섹션을 참고하세요.
이전 TLS 작업
Java 21에서 레거시 TLS 프로토콜 (TLSv1,
TLSv1.1, 및 SSLv3) 및 보안이 약한 디피-헬만 키
(DH keySize < 1024)는
jdk.tls.disabledAlgorithms에서 기본적으로 사용 중지됩니다. 사용 설정하려면 다음 옵션 중 하나를 사용하세요.
- 옵션 A: 백엔드 프로토콜 현대화: 백엔드 서버가
TLS 1.2 또는 TLS 1.3을 지원하도록 업데이트하고 디피-헬만 매개변수 크기가
2048비트 이상 (
>= 2048비트)인지 확인합니다. - 옵션 B: CwC를 사용하여 레거시 프로토콜 다시 사용 설정: 구성이 포함된 코드 (CwC)를 사용하여
/opt/apigee/customer/application/message-processor.properties의conf_jvmsecurity_jdk.tls.disabledAlgorithms에서TLSv1, TLSv1.1을 삭제하여 레거시 TLS 1.0 또는 TLS 1.1 백엔드와의 호환성을 유지합니다.# Re-enable TLS 1.0 and TLS 1.1 for legacy backend connectivity conf_jvmsecurity_jdk.tls.disabledAlgorithms=SSLv3, DTLSv1.0, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, ECDH, TLS_RSA_*, rsa_pkcs1_sha1 usage HandshakeSignature, ecdsa_sha1 usage HandshakeSignature, dsa_sha1 usage HandshakeSignature, include jdk.disabled.namedCurves
정적 RSA 암호화 스위트 작업
Apigee Edge for Private Cloud 버전 4.54.00은 Java 21에서 실행되며,
여기서 임시 디피-헬만 키 교환 (ECDHE 또는 DHE)이 없는 정적 RSA 암호화 스위트 (TLS_RSA_*)는 기본적으로
jdk.tls.disabledAlgorithms에서 사용 중지됩니다 (예:
TLS_RSA_WITH_AES_128_CBC_SHA 또는
TLS_RSA_WITH_AES_256_CBC_SHA). 정적 RSA 암호화 스위트가 필요한 백엔드를 지원하려면 다음 옵션을 사용하세요.
- CwC를 사용하여 정적 RSA 암호화 스위트 다시 사용 설정: 구성이 포함된 코드 (CwC)를 사용하여
/opt/apigee/customer/application/message-processor.properties의conf_jvmsecurity_jdk.tls.disabledAlgorithms에서TLS_RSA_*를 삭제하여 레거시 백엔드와의 호환성을 유지합니다 .# Re-enable Static RSA ciphers for backward compatibility with legacy Java 8 backends conf_jvmsecurity_jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, DTLSv1.0, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, ECDH, rsa_pkcs1_sha1 usage HandshakeSignature, ecdsa_sha1 usage HandshakeSignature, dsa_sha1 usage HandshakeSignature, include jdk.disabled.namedCurves
속성을 수정한 후
apigee-service를 사용하여 메시지 프로세서를 다시 시작합니다.
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
호스트에 TLS 1.3 사용 설정
이 섹션에서는 특정 가상 호스트에 TLS 1.3을 사용 설정하는 방법을 설명합니다. TLS 1.3을 사용 설정하려면 관리 서버 노드에서 다음 단계를 수행합니다.
- 각 관리 서버 노드에서 파일을
/opt/apigee/customer/application/management-server.properties수정하고 다음 줄을 추가합니다 (파일이 없으면 파일을 만듭니다).conf_virtualhost_virtual.host.allowed.protocol.list=TLSv1,TLSv1.1,TLSv1.2,TLSv1.3
이 파일의 경우 프로토콜은 쉼표로 구분되며 대소문자를 구분합니다.
- 파일을 저장합니다.
- 파일의 소유자가
apigee사용자인지 확인합니다.chown apigee:apigee /opt/apigee/customer/application/management-server.properties
- 관리 서버를 다시 시작합니다.
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- 모든 관리 서버 노드에서 이전 단계를 하나씩 반복합니다.
- 다음 속성을 사용하여 가상 호스트를 만들거나 (또는 기존 가상 호스트를 업데이트)
합니다. 프로토콜은 공백으로 구분되며 대소문자를 구분합니다.
"properties": { "property": [ { "name": "ssl_protocols", "value": "TLSv1 TLSv1.1 TLSv1.2 TLSv1.3" } ] }다음 예는 이 속성이 있는 샘플 vhost를 보여줍니다.
{ "hostAliases": [ "api.myCompany,com", ], "interfaces": [], "listenOptions": [], "name": "secure", "port": "443", "retryOptions": [], "properties": { "property": [ { "name": "ssl_protocols", "value": "TLSv1 TLSv1.1 TLSv1.2 TLSv1.3" } ] }, "sSLInfo": { "ciphers": [], "clientAuthEnabled": "false", "enabled": "true", "ignoreValidationErrors": false, "keyAlias": "myCompanyKeyAlias", "keyStore": "ref://myCompanyKeystoreref", "protocols": [] }, "useBuiltInFreeTrialCert": false }
TLS 1.3 테스트
TLS 1.3을 테스트하려면 다음 명령어를 입력합니다.
curl -v --tlsv1.3 "https://api.myCompany,com/testproxy"
이 프로토콜을 지원하는 클라이언트에서만 TLS 1.3을 테스트할 수 있습니다. TLS 1.3이 사용 설정되지 않은 경우 다음과 유사한 오류 메시지가 표시됩니다.
sslv3 alert handshake failure