IT 성장일기
[Tomcat] TLS 버전 제한하기 본문
TLS 버전 제한하기
요즘 들어 부쩍 웹 취약점과 웹 보안 관련된 업무를 할 기회가 많아진 것 같습니다.
고객사에서 취약한 암호화 프로토콜인 TLS1 버전과 TLS1.1 버전의 사용을 제한하도록 설정해 달라는 요청이 와서
이 부분에 관해 새롭게 많은 것을 공부할 기회가 있었습니다.
TLS가 뭐예요?
HTTP + TLS/SSL = HTTPS
전송계층보안 (Transport Layer Security)의 약자로 웹 서버와 클라이언트 간의 보안 통신을 제공하는 프로토콜입니다.
기존 코드
<Connector port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150"
SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/keystore.jks"
certificateKeystorePassword="password"
type="RSA" />
</SSLHostConfig>
</Connector>
Connector 태그 내부에 SSL관련 프로퍼티가 선언되어 있는 형식이었습니다.
Connector 태그는 톰캣을 사용하면서 수도 없이 접해봤었는데,
SSL과 관련된 8443 포트가 설정된 태그를 주의 깊게 본 것은 이번이 처음이었던 것 같습니다.
처음 시도한 코드
<Connector port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150"
SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/keystore.jks"
certificateKeystorePassword="password"
type="RSA" />
<SSLProtocol sslProtocol="TLSv1.2" /> <!-- 새로 추가 된 부분-->
</SSLHostConfig>
</Connector>
SSLHostConfig 태그 내부에 SSLProtocol 버전을 제한해 주는 코드를 삽입했습니다.
서버가 정상적으로 작동하는 것은 확인했지만 고객사에서 검증을 거친 결과 반영되지는 않았었습니다.
1차 수정 후 코드
<Connector port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150"
SSLEnabled="true"
sslEnabledProtocol="TLSv1.2"> <!-- 새로 추가된 부분-->
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/keystore.jks"
certificateKeystorePassword="password"
type="RSA" />
</SSLHostConfig>
</Connector>
TLS 버전을 제한하는 속성을 Connector 태그 내에 선언했습니다. 하지만 이 코드는 서버의 동작 자체가 불가능했습니다.
정확한 원인은 잘 모르겠습니다만 keystorefile관련 값이 다른 태그에 선언되어 있어서 그런 것이 아닐까 추측되었습니다.
결국 구글과 각종 가이드에 가장 많이 등장하는 형식으로 바꿔보았습니다.
2차 수정 후 코드
<Connector port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150"
SSLEnabled="true"
sslEnabledProtocol="TLSv1.2"
KeystoreFile="conf/keystore.p12"
KeystorePass="password" />
SSLHostConfig 태그 내부의 키파일 경로와 키암호를 Connector 태그 내부에 삽입했습니다. 이번엔 서버가 제대로 작동했습니다.
실운영서버의 작동을 확인하고 검증을 요청한 결과 성공적으로 반영되었다는 답변도 받았습니다.
문제가 된 TLS1과 TLS1.1 버전은 현재 주로 사용되는 1.2 및 1.3 버전에 비해 많이 취약한 보안 수준을 제공하기 때문에
사용하지 않도록 하는 것이 바람직하다고 합니다.
하지만 늘 그렇듯 해당 어플리케이션의 환경과 조건에 맞게 설정하는 것이 좋겠습니다.
도움이 되어드렸다면 구독 / 좋아요 부탁드립니다.👏🏻
감사합니다.🙂
'Server > Tomcat' 카테고리의 다른 글
[Tomcat] Tomcat 전용 SSL 인증서인 JKS 파일 만들고 정보 확인하기 (0) | 2023.09.11 |
---|---|
[Tomcat] 암호화 알고리즘 사용 제한하기 (0) | 2023.09.11 |
[Tomcat] 설정한 에러 페이지가 아닌 기본 에러 페이지가 나타날 때 (with Error Code 400) (0) | 2023.09.11 |
[Tomcat] Default Error Page에서 톰캣 버전 정보 감추기 (0) | 2023.09.11 |
[Tomcat] 사용 중인 웹 서버 포트를 터미널에서 강제로 닫기 (0) | 2023.09.11 |