TOOL/SERVER 2017. 4. 25. 01:16

!markdown


# Tomcat (톰캣)


### 암호화정보


Tomcat7을 예로 들어 설명하였으며, JNDI설정이 선행되었다는 가정하에 진행됩니다.


간략하게 설명드리면, 


{TOMCAT7}/lib/`tomcat-jdbc.jar`만 새롭게 컴파일해서 교체해주고, 


{TOMCAT7}/conf/`context.xml`에 암호화된 정보를 넣어줄 것입니다.





-----


### 암호화된 정보를 취급하는 Tomcat7 만들기 (tomcat-jdbc.jar새로 만들기)


#### 1) Tomcat7-src 다운로드


[http://tomcat.apache.org/download-70.cgi](http://tomcat.apache.org/download-70.cgi)의 `Source Code Distributions`란에서 소스코드를 압축파일로 공개하고 있다.




#### 2) modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/DataSourceFactory.java


- DataSourceFactory 클래스를 상속(Extends)하여 다음처럼 구현한다. 


[http://www.jdev.it/encrypting-passwords-in-tomcat/](http://www.jdev.it/encrypting-passwords-in-tomcat/) 이곳의 `EncryptedDataSourceFactory 클래스`를 참조한다.


- 암복호화 Class를 구현한다.


[http://www.jdev.it/encrypting-passwords-in-tomcat/](http://www.jdev.it/encrypting-passwords-in-tomcat/) 이곳의 `Encryptor 클래스`를 참조한다.





#### 3) 빌드(jar파일로 만들기)


- 메이븐(Maven)으로 빌드

```bash

mvn clean compile jar:jar

```


- `jdbc-pool.jar`를 `tomcat-jdbc.jar`로 이름을 바꾼다.




#### 4) JNDI로 설정된 Tomcat7의 lib폴더에 `tomcat-jdbc.jar`를 덮어씌우면 된다.




-----


### Tomcat7에 적용하여 사용하기


#### 1)  {TOMCAT7}/lib/에 `tomcat-jdbc.jar`를 복사한다. (덮어쓰기)


#### 2)  {TOMCAT7}/conf/`context.xml` 내용 추가


```xml

factory="com.meta.encrypt.EncryptedDataSourceFactory"

```


```xml

username="zN3cRNGQEUk9JQ" 

password="zcRNGEUk9J="

url="aDWp3MqlyTgEs3UVYywtE4hZ2BB3SxZ0SCXHtiJ"

```


`ex)`


```xml

<Context>


    <!-- Default set of monitored resources -->

    <WatchedResource>WEB-INF/web.xml</WatchedResource>


    <!-- Uncomment this to disable session persistence across Tomcat restarts -->

    <!--

    <Manager pathname="" />

    -->


    <!-- Uncomment this to enable Comet connection tacking (provides events

         on session expiration as well as webapp lifecycle) -->

    <!--

    <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />

    -->


<Resource auth="Container"

  factory="com.meta.encrypt.EncryptedDataSourceFactory"

               type ="javax.sql.DataSource"

               maxActive="8"

               maxIdle="4"

               driverClassName="oracle.jdbc.driver.OracleDriver"

               name="jdbc/oracle"

               username="zN3cRNGC7HCDzzSQEUk9JQ=="

               password="zN3cRNGC7HCDzzSQEUk9JQ=="

               url="/LaDW76p3MqlyTgEs3UVYywZ2bsm/n3FEtE4hZ2hS0BB3SxcPJ+eXjWZ0SCXHtiJ"

               />                           



</Context>

```


### 참고


DBCP 설정 Properties 암호화하여 사용하기: 

[http://ukzzang.tistory.com/24](http://ukzzang.tistory.com/24)


Tomcat7 Download

[http://tomcat.apache.org/download-70.cgi](http://tomcat.apache.org/download-70.cgi)


SEED 암호화 알고리즘을 이용한 암호화/복호화 유틸:

[http://blog.naver.com/PostView.nhn?blogId=knight50&logNo=80160289859&categoryNo=17&parentCategoryNo=0&viewDate=&currentPage=1&postListTopCurrentPage=1&from=search](http://blog.naver.com/PostView.nhn?blogId=knight50&logNo=80160289859&categoryNo=17&parentCategoryNo=0&viewDate=&currentPage=1&postListTopCurrentPage=1&from=search)


톰캣 디비 접속 아이디/비번 암호화:

[http://sessi0n.tistory.com/entry/%ED%86%B0%EC%BC%93-%EB%94%94%EB%B9%84-%EC%A0%91%EC%86%8D-%EC%95%84%EC%9D%B4%EB%94%94%EB%B9%84%EB%B2%88-%EC%95%94%ED%98%B8%ED%99%94](http://sessi0n.tistory.com/entry/%ED%86%B0%EC%BC%93-%EB%94%94%EB%B9%84-%EC%A0%91%EC%86%8D-%EC%95%84%EC%9D%B4%EB%94%94%EB%B9%84%EB%B2%88-%EC%95%94%ED%98%B8%ED%99%94)


Encrypting passwords in Tomcat:

[http://www.jdev.it/encrypting-passwords-in-tomcat/](http://www.jdev.it/encrypting-passwords-in-tomcat/)