Tomcat / JBOSS 경우 약한 SSL 암호화를 비활성화 시키기 위해 server.xml 파일을 다음과 같이 변경후

 

서버를 재실행 시켜야 합니다.

 

 

 server.xml

 <Connector port="8443"
               connectionTimeout="20000"
               protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" minSpareThreads="25"
               enableLookups="false" disableUploadTimeout="true"
               acceptCount="100" scheme="https" secure="true"
               clientAuth="false"
               sslEnabledProtocols="TLSv1.2"
               sslProtocol="TLSv1.2"
               keystorePass="asdfasdf"
               keystoreFile="conf/test/test.keystore"

               ciphers="참고자료"

 

"참고자료" 부분에는 아래 사이트에 해당하는 내용을 기입하면 됩니다.

여러개를 입력시에는 구분자는 콤마(,) 입니다.

 

ex)"TLS_RSA_WITH_AES_256_CBC_SHA256,

TLS_DH_DSS_WITH_AES_256_CBC_SHA256,

TLS_DH_RSA_WITH_AES_256_CBC_SHA256,

TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,

TLS_DH_anon_WITH_AES_256_CBC_SHA256"

 

또한 서버 시작시 옵션값을 추가해 줍니다.

 

시작 옵션값 

      -Djavax.net.ssl.keyStore=keystore path \
      -Djavax.net.ssl.keyStorePassword=key passwd \
      -Djavax.net.ssl.keyStoreType=jks \
      -Djavax.net.ssl.trustStore=keystore path \

 

 

 로직 추가

 KeyStore ks = KeyStore.getInstance("JKS");
            ks.load(new FileInputStream(System.getProperty("javax.net.ssl.keyStore")), System.getProperty("javax.net.ssl.keyStorePassword").toCharArray());
           
            KeyManagerFactory kmf = null;
            try{
               kmf=KeyManagerFactory.getInstance("SunX509");
            } catch(NoSuchAlgorithmException e) {
                try{
                    kmf=KeyManagerFactory.getInstance("IbmX509");
                } catch(NoSuchAlgorithmException e1) {
                    kmf=KeyManagerFactory.getInstance("PKIX");
                }
            }
            
            kmf.init(ks, System.getProperty("javax.net.ssl.keyStorePassword").toCharArray());
            KeyManager[] km = kmf.getKeyManagers();

            SSLContext sslContext = SSLContext.getInstance(protocol);
            sslContext.init(km, null, null);
            SSLContext.getDefault().setDefault(sslContext);

 

이렇게 하시면 TLS1.2 로 통신이 가능합니다.

 

TLS1.2로 통신하기 위해서는 반드시 JDK 1.7 이상이어야 합니다.