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 시작 인수는 구성 예시이며, 런타임 동작이나 출력에 대한 실행 증거는 제공되지 않습니다.