HOWTO · Java
Java SSL 디버그 로깅을 제한하는 방법
오늘은 Java SSL 디버그, 그 중요성, 다양한 유틸리티 및 단일 명령에서 하나 또는 여러 개를 사용하는 방법에 대해 알아봅니다.
이 페이지의 내용
Java SSL/TLS 디버그 로깅은 연결이 실패할 때 핸드셰이크, 인증서 및 레코드 세부 정보를 드러낼 수 있습니다. JVM이 무엇을 하고 있는지 범위를 좁히는 데 도움이 될 수 있지만, TLS 교환 외부의 문제를 식별하지 못할 수도 있습니다.
Java SSL 디버그 로깅이 연결 문제 해결에 도움이 되는 이유
JVM을 시작할 때 javax.net.debug 시스템 속성을 설정합니다. 광범위한 인수 -Djavax.net.debug=ssl은 SSL 관련 진단을 활성화하고 상당한 양의 출력을 생성할 수 있으므로, 집중적인 조사에 사용하고 로그를 공유하기 전에 검토하십시오. 상세한 연결 로그에는 민감한 정보가 포함될 수 있습니다.
인수를 애플리케이션의 JVM 옵션에 추가합니다. 애플리케이션 서버의 경우 시작 구성을 업데이트하고 서버를 다시 시작합니다. 옵션을 변경해도 이미 실행 중인 JVM에는 영향을 주지 않습니다.
디버그 지정자로 Java SSL 디버그 로깅 제한하기
진단 범위를 좁히려면 속성 값에 지정자를 추가합니다. 예를 들어 -Djavax.net.debug=ssl:handshake는 SSL 핸드셰이크 진단을 요청합니다. 여러 지정자를 사용하는 형식은 -Djavax.net.debug=ssl:handshake,record,session입니다. 이는 대표적인 형식입니다. 지원되는 지정자, 구분 기호 및 세부 정보는 Java 런타임마다 다를 수 있습니다. 옵션이 인식되지 않거나 예상한 세부 정보가 생성되지 않으면 실행 중인 JVM의 문서를 확인하십시오.
다음에 제공된 지정자는 일반적인 진단 영역을 설명합니다. 사용 가능 여부와 세부 정보의 양은 런타임마다 다를 수 있으며, all은 특히 출력이 많을 수 있습니다.
| 디버그 지정자 | 진단 목적 |
|---|---|
all |
지원되는 영역 전반에 걸친 광범위한 디버깅. |
ssl |
SSL/TLS 관련 디버깅. |
record |
레코드 수준 추적. 프로토콜 데이터를 조사할 때 유용합니다. |
handshake |
핸드셰이크 메시지 추적. |
keygen |
키 생성 세부 정보. |
session |
세션 활동. |
defaultctx |
기본 SSL 컨텍스트 초기화. |
sslctx |
SSL 컨텍스트 추적. |
sessioncache |
세션 캐시 활동. |
keymanager |
키 관리자 활동. |
trustmanager |
신뢰 관리자 활동. |
data |
지원되는 경우 핸드셰이크 메시지의 16진수 데이터. |
verbose |
지원되는 경우 더 상세한 핸드셰이크 메시지 출력. |
plaintext |
지원되는 경우 평문 레코드 데이터. 이 출력은 민감한 것으로 취급하십시오. |
packet |
지원되는 경우 원시 SSL/TLS 패킷 세부 정보. |
질문에 맞는 가장 좁은 지정자부터 시작하고, 조사가 완료되면 JVM 옵션을 제거합니다. 이러한 JVM 시작 인수는 구성 예시이며, 런타임 동작이나 출력에 대한 실행 증거는 제공되지 않습니다.