[Tomcat7] JNDI DataSource 암호화 복호화
!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=¤tPage=1&postListTopCurrentPage=1&from=search](http://blog.naver.com/PostView.nhn?blogId=knight50&logNo=80160289859&categoryNo=17&parentCategoryNo=0&viewDate=¤tPage=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/)