Tomcat에 인증서를 설치하기 위해서는 crt 또는 pem 포맷으로 되어있는 인증서를 Tomcat에서 제공하는 형태의 pfx 또는 jks로 변환해서 적용해야 한다.
인증서의 경우, 어떤 업체에서 인증서를 구매하냐에 따라 인증서를 다르게 다운받을 수 있게 되는데 보통의 경우
도메인.crt
도메인.csr
도메인.pem
도메인.key
도메인.nopass.key
Chain_RootCA_Bundle.crt
위 형태의 인증서들을 다운받게 될 것이다.
Tomcat의 경우 위 형태의 인증서로 바로 적용이 불가능해서 pfx 또는 jks 확장자로 변환하여 적용해야하는데
이때 위의 인증서들을 합친 후 변환해주어야 한다.
인증서 다운 시, crt 파일과 key 파일, Chain 파일이 있다면,
crt파일과 chain 파일을 합쳐주면 된다.
이때 순서는 crt 파일 + chain 파일 순서로 crt 파일이 위에 오고 그 밑에 chain 파일이 올 수 있도록 합쳐주어야한다.
ex )
cat juu98.com.crt Chain_RootCA_Bundle.crt > juu98.com.pem
만약 인증서 다운 시 crt 파일이 존재하지 않고 pem 파일이 존재한다면
pem파일과 chain 파일을 합쳐주면 된다.
이때 순서는 pem 파일 + chain 파일 순서로 pem 파일이 위에 오고 그 밑에 chain 파일이 올 수 있도록 합쳐주어야한다.
(pem 파일을 열어보면 BEGIN CERTIFICATE으로 시작하는것으로 보아, crt파일을 포함한 파일인데 pem 형식의 인증서인거같음)
ex )
cat juu98.com.pem Chain_RootCA_Bundle.crt > juu98.com.crt
확장자 변경
[ crt -> pfx ]
openssl pkcs12 -export -name juu98.com -in juu98.com.crt -inkey juu98.com.key -out juu98.com.pfx
[ pem -> pfx ]
openssl pkcs12 -export -name juu98.com -in juu98.com.pem -inkey juu98.com.key -out juu98.com.pfx
=> 이때, 인증서에 패스워드를 걸고 싶지 않다면 nopass.key 파일 사용하면 됨.
[ pfx -> jks ]
keytool -importkeystore -srckeystore juu98.com.pfx -srcstoretype pkcs12 -destkeystore juu98.jks -deststoretype jks
Tomcat SSL 설정
[ pfx 확장자 인증서 등록 ]
pfx 확장자의 경우 사용 원할 경우 가능하지만, 확장자를 명시해주어야한다.
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" server=" " URIEncoding="utf-8"/>
<Connector port="443"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75" URIEncoding="utf-8"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" debug="0" scheme="https" secure="true" SSLEnabled="true"
clientAuth="false" sslEnabledProtocols="TLSv1.2,TLSv1.3"
keystoreFile="/web/ssl/juu98.com.pfx"
keystoreType="PKCS12"
keystorePass="1234"
/>
[ jks 확장자 인증서 등록 ]
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" server=" " URIEncoding="utf-8"/>
<Connector port="443"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75" URIEncoding="utf-8"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" debug="0" scheme="https" secure="true" SSLEnabled="true"
clientAuth="false" sslEnabledProtocols="TLSv1.2,TLSv1.3"
keystoreFile="/web/ssl/juu98.com.jks
keystorePass="1234"
/>
변경 완료 후 tomcat 재시작
# service tomcat9 restart
인증서 형식 참고 url : https://www.lesstif.com/software-architect/pem-cer-der-crt-csr-113345004.html
PEM 과 CER/DER/CRT/CSR 형식 파일이란?
www.lesstif.com
'Linux > 일반' 카테고리의 다른 글
| inode 용량 확인 및 삭제 (0) | 2023.02.27 |
|---|---|
| Apache restart와 graceful의 차이점 (0) | 2023.02.27 |
| [error] error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory (0) | 2023.02.23 |
| nodejs 16.x 설치 (0) | 2023.01.16 |
| 로드밸런서 이해하기 ( #2. SSL 인증서 등록, 포트포워딩, log 확인 ) (0) | 2023.01.10 |