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("");
}
}
}
'IT Business' 카테고리의 다른 글
The server time zone value 'KST' is unrecognized or represents more than one time zone. (0) | 2023.04.10 |
---|---|
Resource specification not allowed here for source level below 1.7 (0) | 2022.11.03 |
사설인증서 생성 시 alternative names 설정 오류 (0) | 2021.07.26 |
jvm에 서버 인증서 등록하지 않은 경우 (0) | 2021.07.26 |
WAS 기동 시 readClass Error (0) | 2021.07.26 |