4.3. SSL/TLS 프로토콜 버전
4.3.1. 개요
Apache CXF에서 지원하는 SSL/TLS 프로토콜 버전은 구성된 특정 JSSE 공급자에 따라 다릅니다. 기본적으로 JSSE 공급자는 SUN의 JSSE 공급자 구현으로 구성됩니다.
SSL/TLS 보안을 활성화하는 경우 Poodle 취약점(CVE-2014-3566) 으로부터 보호하기 위해 SSLv3 프로토콜을 명시적으로 비활성화해야 합니다. 자세한 내용은 JBoss Fuse 6.x 및 JBoss A-MQ 6.x에서 SSLv3 비활성화 를 참조하십시오.
4.3.2. SunJSSE에서 지원하는 SSL/TLS 프로토콜 버전
표 4.2. “SUN의 JSSE 공급자가 지원하는 SSL/TLS 프로토콜” SUN의 JSSE 공급자가 지원하는 SSL/TLS 프로토콜 버전을 보여줍니다.
프로토콜 | 설명 |
---|---|
| 사용하지 마십시오! (POODLE 보안 취약점) |
| 사용하지 마십시오! (POODLE 보안 취약점) |
| TLS 버전 1 지원 |
| TLS 버전 1.1 지원 (JDK 7 이상) |
| TLS 버전 1.2 지원 (JDK 7 이상) |
4.3.3. 특정 SSL/TLS 프로토콜 버전 제외
기본적으로 JSSE 공급자가 제공하는 모든 SSL/TLS 프로토콜은 CXF 엔드포인트에서 사용할 수 있습니다( SSLv2Hello
및 SSLv3
프로토콜 제외). 이 프로토콜은 Poodle 취약점 (CVE-2014-3566)이후 Fuse 버전 6.2.0 이후 CXF 런타임에서 특별히 제외되었습니다.
특정 SSL/TLS 프로토콜을 제외하려면 엔드포인트 구성에서 sec:excludeProtocols
요소를 사용합니다. sec:excludeProtocols
요소를 httpj:tlsServerParameters
요소(서버 측)의 하위로 구성할 수 있습니다.
TLS 버전 1.2를 제외한 모든 프로토콜을 제외하려면 sec:excludeProtocols
요소를 다음과 같이 구성합니다 ( JDK 7 이상을 사용한다고 가정).
<?xml version="1.0" encoding="UTF-8"?> <beans ... > ... <httpj:engine-factory bus="cxf"> <httpj:engine port="9001"> ... <httpj:tlsServerParameters> ... <sec:excludeProtocols> <sec:excludeProtocol>SSLv2Hello</sec:excludeProtocol> <sec:excludeProtocol>SSLv3</sec:excludeProtocol> <sec:excludeProtocol>TLSv1</sec:excludeProtocol> <sec:excludeProtocol>TLSv1.1</sec:excludeProtocol> </sec:excludeProtocols> </httpj:tlsServerParameters> </httpj:engine> </httpj:engine-factory> ... </beans>
Poodle 취약점 (CVE-2014-3566) 으로부터 보호하기 위해 항상 SSLv2Hello
및 SSLv3
프로토콜을 제외하는 것이 좋습니다.
4.3.4. SecureSocketProtocol 특성
http:tlsClientParameters
요소와 httpj:tlsServerParameters
요소 모두 secureSocketProtocol
속성을 지원하므로 특정 프로토콜을 지정할 수 있습니다.
이 속성의 의미 체계는 혼동하지만, 이 속성은 CXF가 지정된 프로토콜을 지원하는 SSL 공급자를 선택하도록 강제 하지만 지정된 프로토콜만 사용하도록 공급자는 제한하지 않습니다. 따라서 끝점은 지정된 프로토콜과 다른 프로토콜을 사용할 수 있습니다. 이러한 이유로 코드에서 secureSocketProtocol
속성을 사용하지 않는 것이 좋습니다.