[Error] Tomcat SSL 적용 인스턴스 오류

LSHan·2023년 6월 27일
2

오류/문제해결

목록 보기
1/1
post-thumbnail

[Tomcat] SSL 적용 실패

🎯 톰캣서버에 SSL인증서를 적용해야할 일이 생겨 평소처럼 적용을 했지만, 계속된 인스턴스 오류로 인해 443포트가 적용이 되지 않는 문제가 발생했다.

오류내용 및 상황

⚙️환경

  • CentOS7
  • Tomcat9
  • SSL인증서 타입 : *.jks

🔥오류내용

SSL 인증서를 세팅 후 Tomcat을 가동하게 되면 "프로토콜 핸들러 인스턴스 생성에 실패했습니다"라는 오류와 함께 서버 가동에 실패함.

문제해결

문제 해결을 위해 SSL을 다시 세팅해보고 등등 시도해봤지만, 문제는 server.xml을 잘못 설정해서 발생.

이미 설정된 SSL의 server.xml을 참고하고 세팅한 것이지만 계속된 오류로 server.xml을 아래와 같은 방법으로 설정을 수정하니 문제 해결함.

🛠️문제해결 방법

  • Tomcat $TOMCAT_HOME/conf/server.xml의 Connector설정 변경

AS-IS 설정(server.xml)

# AS-IS server.xml 설정
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />

<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol"
           SSLEnabled="true" URIEncoding="UTF-8"
           maxThreads="150" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS" 
           keystoreFile="[SSL인증서 위치]"
           keystorePass="[SSL인증서 비밀번호]" />

TO-BE 설정(server.xml)

<Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="443" />

<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" 
           SSLEnabled="true" URIEncoding="UTF-8"
           maxThreads="150" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS" 
           keystoreFile="[SSL인증서 위치]"
           keystorePass="[SSL인증서 비밀번호]" />

이렇게 설정만 변경하고 재 실행하니 정상적으로 서버가 가동되었다.

결론

확인해보니 protocol "org.apache.coyote.http11.Http11Protocol"Tomcat 9에서 더 이상 사용되지 않고, protocol="org.apache.coyote.http11.Http11NioProtocol"로 사용해야한다고 한다.

지금까지 Tomcat7/8 버전만 사용해서 문제가 발생하지 않았지만,
Tomcat9처럼 class가 지원하지 않은 경우가 발생하니 잘 확인하고 적용하는것이 좋을듯 하다.

Reference

profile
잊으면 안될 내용들 혹은 간혹 필요한 정보들을 적습니다.

0개의 댓글