17장 Tomcat이 TLS를 직접 종료할 때 교체한다
Tomcat 11은 JSSE 방식의 JKS·PKCS12 keystore와 PEM/OpenSSL 스타일 구성을 지원한다. 한 Connector에서 두 스타일의 속성을 섞지 않는다.
PKCS12를 만드는 예시는 다음과 같다. passphrase는 명령행 문자열 대신 권한이 제한된 파일이나 조직 비밀 도구로 전달한다.
openssl pkcs12 -export
-in next-cert.pem
-inkey next-key.pem
-certfile chain.pem
-name tomcat
-out next-tomcat.p12
keytool -list -v -keystore next-tomcat.p12 -storetype PKCS12
JSSE Connector의 핵심 형태는 다음과 같다. 비밀번호를 평문 server.xml에 고정하지 말고 Tomcat과 조직이 지원하는 비밀 주입 방식을 사용한다.
<Connector port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true" scheme="https" secure="true">
<SSLHostConfig protocols="TLSv1.3,TLSv1.2">
<Certificate
certificateKeystoreFile="/etc/releaseportal/tls/current.p12"
certificateKeystoreType="PKCS12"
certificateKeyAlias="tomcat" />
</SSLHostConfig>
</Connector>
Tomcat Manager text endpoint의 sslReload는 certificate와 key 파일을 다시 읽지만 server.xml 자체를 다시 parse하지 않는다. 파일 내용만 교체했다면 reload 후보가 될 수 있다. Connector 구조나 경로를 바꿨다면 재시작과 별도 변경 절차가 필요하다.
/manager/text/sslReload
/manager/text/sslReload?tlsHostName=portal.example.com
Manager 권한을 인터넷에 열지 않는다. 실행 뒤 sslConnectorCiphers, sslConnectorCerts 계열 진단과 외부 handshake를 확인한다. 지원 중인 정확한 endpoint와 역할은 사용 중인 Tomcat 버전 문서를 다시 본다.