Java SSL 디버그 로깅 제한
오늘은 Java SSL 디버그, 그 중요성, 다양한 유틸리티 및 단일 명령에서 하나 또는 여러 개를 사용하는 방법에 대해 알아봅니다.
Java SSL 디버그 및 그 중요성
Java 웹 애플리케이션에서 SSL(Secure Socket Layer)을 처리하는 것은 재미가 없습니다. 특히 문제 해결이나 디버깅 로그 없이 브라우저에 페이지를 표시할 수 없습니다
라는 보기 흉한 페이지가 표시될 때 그렇습니다.
이러한 상황에서는 애플리케이션을 쉽게 디버깅할 수 있고 자세한 로그를 볼 수 있는 SSL의 중요성이 높아집니다. 이 로그는 이 오류에 대해 우리(개발자)를 안내합니다.
사용할 수 있는 다양한 디버그 유틸리티가 있습니다. 다음은 애플리케이션 서버 JVM(Java Virtual Machine)에서 모든 SSL 디버깅 로그를 활성화하는 것입니다.
다음 JVM 명령줄 매개변수를 추가한 후 애플리케이션 서버를 다시 시작하는 것을 잊지 마십시오.
-Djavax.net.debug=ssl
문제는 위의 명령이 일부 시나리오에서는 필요하지 않을 수 있는 모든 SSL 디버깅을 켠다는 것입니다.
그렇다면 Java SSL 디버그 로깅을 어떻게 제한할 수 있습니까? 아래에서 배워봅시다.
Java SSL 디버그 로깅 제한
-Djavax.net.debug=ssl
명령을 사용하면 서버의 각 SSL 이벤트에 대한 엄청난 양의 로깅 및 세부 정보가 기록됩니다. 프로젝트 요구 사항에 따라 어떻게 제한할 수 있습니까?
이를 해결하려면 디버그 로깅을 위해 SSL이 필요한 콜론(:
)으로 구분된 디버그 지정자(플래그라고도 함)를 지정해야 합니다. 예를 들어 handshake
에 대해 다음과 같이 기록할 수 있습니다.
-Djavax.net.debug=ssl:handshake
javax.net.debug
속성 값(ssl
이든 all
이든 뒤에 디버그 지정자(선택 사항))을 지정해야 한다는 점을 기억하십시오.
또한 여러 디버그 지정자를 사용할 수 있으며 이러한 옵션(디버그 지정자)에 구분 기호가 없어도 됩니다. 하지만 구분 기호(:
또는 ,
)가 있으면 가독성이 높아집니다. 명확하게 이해하려면 다음 예를 참조하십시오.
-Djavax.net.debug=ssl:handshake, record, session
위의 명령은 콜론(:
)을 여러 디버그 지정자 사이의 구분 기호로 사용할 수도 있습니다. 어떤 구분 기호를 사용하는지는 중요하지 않습니다. 디버그 지정자의 순서도 중요하지 않습니다.
다음은 알아두면 유용할 수 있는 몇 가지 옵션입니다.
디버그 지정자(옵션) | 설명 |
---|---|
all |
모든 디버깅을 켭니다. |
ssl |
모든 ssl 디버깅을 켭니다. |
record |
ssl 과 함께 사용되며 레코드별 추적을 활성화합니다. |
handshake |
ssl 과 함께 사용되며 모든 handshake 메시지를 인쇄합니다. |
keygen |
ssl 과 함께 사용되며 키 생성 데이터를 인쇄합니다. |
session |
ssl 과 함께 사용되며 세션 활동을 인쇄합니다. |
defaultctx |
ssl 과 함께 사용하고 기본 ssl 초기화를 인쇄할 수 있습니다. |
sslctx |
ssl 및 인쇄 ssl 컨텍스트 추적과 함께 사용됩니다. |
sessioncache |
ssl 과 함께 사용되며 세션 캐시 추적을 인쇄합니다. |
keymanager |
ssl 과 함께 사용되며 키 관리자 추적을 인쇄합니다. |
trustmanager |
신뢰 관리자 추적을 인쇄하고 ssl 과 함께 사용됩니다. |
data |
handshake 디버깅을 확장하는 데 사용할 수 있는 모든 handshake 메시지의 16진수 덤프입니다. |
verbose |
verbose handshake 메시지 인쇄 및 handshake 디버깅을 확장하는 데 사용됩니다. |
plaintext |
레코드 디버깅을 확장하는 데 사용되는 레코드 일반 텍스트 의 16진수 덤프입니다. |
packet |
원시 SSL /TLS 패킷을 인쇄하며 레코드 디버깅을 확장하는 데도 사용됩니다. |
필요와 프로젝트 요구 사항에 따라 이들 중 하나를 사용할 수 있습니다.