79[Tomcat] SSL 보안서버 구축하는 법Admin
출처: http://stackoverflow.com/questions/527610/how-can-i-create-a-pfx-file-from-a-java-keystore  등 각종 자료


톰캣서버에서 SSL보안서버 구축하는 법

1) keystore 파일 생성
keytool -genkey -alias tomcat -keyalg RSA -keystore keystore_2048.jks -keysize 2048

2) csr 추출 및 확인
keytool -certreq -keyalg RSA -alias tomcat -file csr.csr -keystore keystore_2048.jks

3) 인증서발급(cer파일로...ex: myServer.cer)
추출된 csr파일을 사용하여 인증서발급 기관의 각 상황에 맞게 파일 발급
cer파일이 아닌 경우 파일변환이 필요


4) keystore에 루트 인증서 저장
keytool -import -alias root -keystore keystore_2048.jks -trustcacerts -file rootca.cer

5) keystore에 체인 인증서 저장
keytool -import -alias chain -keystore keystore_2048.jks -trustcacerts -file caChain.cer

6) SSL인증서 설치
keytool -import -alias tomcat -keystore keystore_2048.jks -trustcacerts -file myServer.cer

7) server.xml파일 수정
포트 8443이 주석처리된 부분을 주석제거하고 포트는 443으로 변경하고
keystoreFile="keystore파일 경로"
keystorePass="1234"
ciphers="SSL_RSA_WITH_RC4_128_MD5,SSL_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA,SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA,SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA"
와같은 파라메터를 추가한다.





* keystore(jks)파일에 포함된 alias들의 정보(인증서 목록)을 보고 확인하기
keytool -list -keystore keystore_2048.jks
keytool -list -keystore keystore_2048.jks -v    //상세보기



* keystore(jks)파일을 pfx파일로 변환하는 방법
keytool -importkeystore -srckeystore keystore_2048.jks -srcstoretype JKS -destkeystore thekeystore.pfx -deststoretype PKCS12



* keystore(jks)파일에서 특정 인증서를 추출하는 방법
keytool -export -alias tomcat -keystore server.jks -rfc -file tomcat.cer



Retomcat9에서 7번 server.xml파일 수정법Admin
tomcat9에서 7번 server.xml파일 SSL관련 설정 예


<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" URIEncoding="UTF-8"
        keystoreFile="/키스토어파일경로/test.jks" keystorePass="pass" keyAlias="alias name" >
        <SSLHostConfig honorCipherOrder="false" hostName="*.domain.url" ciphers="SSL_RSA_WITH_RC4_128_MD5,SSL_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA,SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA,SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA">
                        <Certificate
              certificateKeystoreFile="/키스토어파일경로/test.jks"
              certificateKeystorePassword="pass"
              certificateKeyAlias="alias name"
                        />
        </SSLHostConfig>
    </Connector>