IT Business

tomcat ssl연결 keystorepass 암호화

ilovejua 2021. 8. 1. 22:44
반응형

tomcat에서 ssl을 설정하는 server.xml에서 keystorepass 값을 암호화하는 방식을 구현한 예제이다.

base64로 인코딩한 값을 pw로 설정해주면 되도록 수정했다.

 

coyoye-base64-jdk8.jar 는 jdk8 버전 사용할 경우

coyoye-base64-codec-jdk7.jar는 jdk7 버전 사용할 경우 쓰면된다. (commons-codec-1.10.jar 도 같이 추가)

 

tomcat의 lib폴더 내에 복사한 후, protocol 정보를 org.apache.coyote.http11.Http11Nio2ProtocolEnc 수정

 

설정 예>

<Connector
protocol="org.apache.coyote.http11.Http11NioProtocolEnc"
port="443"
scheme="https"
secure="true"
SSLEnabled="true"
keystoreFile="키스토어"
keystorePass="암호"
keystoreType="키타입 pkcs12 or jks"
/>

 

해당 부분을 적용하기 위해서 org.apache.coyote.http11.Http11Nio2Protocol을 상속해서 만든 클래스이므로 tomcat8 버전 이상에서 적용이 가능하다. (하위 버전 톰캣에서 지원이 필요하면 Http11NioProtocol를 상속하여 수정. 아래 소스코드를 참고하여 수정해서 사용)

 

package org.apache.coyote.http11;

import java.util.Base64;
import java.util.Base64.Decoder;

public class Http11Nio2ProtocolEnc extends Http11Nio2Protocol
{
  public void setKeystorePass(String s)
  {
    try
    {
      super.setKeystorePass(new String(Base64.getDecoder().decode(s), "UTF-8"));
    } catch (Exception e) {
      super.setKeystorePass("");
    }
  }
}

coyoye-base64-jdk8.jar
901 B
coyoye-base64-codec-jdk7.jar
841 B
commons-codec-1.10.jar
284.2 kB