프로그래밍/자바
javamail ssl 오류 SSLHandshakeException
말춘이
2021. 11. 4. 16:56
반응형
자바 메일 발송시 다음과 같은 Exception이 발생하였다.
javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate) |
JDK가 TLS 프로토콜이 비활성 되어있거나 TLS 버전이 상이하여 발생하는 것이다.
그래서 다음 명령어를 통해 어떤 버전이 지원 가능한지 서버에 요청해 보았다.
$ openssl s_client -connect 서버주소:465 -tls1_2 |
TLS 1.2 와 1.3은 정상 접속이 되는데 1.1은 error:141E70BF:SSL routines 라는 오류가 발생하였다.
그래서 자바 메일에서 사용할 기본 TLS 버전을 1.2로 변경하기로 했다. JDK가 사용할 TLS 클라이언트 버전 설정은 시스템프로퍼티로 등록하면 된다.
System.setProperty("jdk.tls.client.protocols", "TLSv1.2"); |
혹은 java 옵션 -Djdk.tls.client.protocols=TLSv1.2을 사용한다.
https의 TLS 버전을 변경하고 싶을 땐 -Dhttps.protocols=TLSv1.2 옵션을 사용한다.
Property | Description |
jdk.tls.client.protocols | 기본 JDK TLS 프로토콜 설정 |
https.protocols | HttpsURLConnection 클래스 또는 URL.openStream() 작업을 사용하여 https 연결을 얻는 클라이언트에서 사용하는 프로토콜 설정 |
반응형