2014-04-14 4 views
3

많은 검색을 수행했지만 해결책을 찾을 수 없습니다.Tomcat 연결 풀의 SSL

내 프로젝트에서는 postgresql에 Tomcat 연결 풀링과 C3P0 연결 풀링을 모두 사용하고 있습니다. 나는 공식적으로 postgresql에 의해 제안되지 않았기 때문에 JDBC 연결 풀링을 사용하는 것을 거부했다.

이제 이러한 풀에서 SSL/TLS를 사용하도록 설정해야합니다. 나는 이것이 매우 공통적 인 필요라고 생각했다. JDBC 풀링에 대한 예제를 찾았지만, tomcat이나 c3p0에 대한 예제는 없습니다. 바람둥이 및 c3p0 풀링이 SSL을 구성 할 수 있는지 궁금합니다.

내가 참조 할 수있는이 주제에 대한 자료가있는 사람이 있습니까?

답변

3

SSL 전송은 c3p0에 투명해야합니다. 단지 set up your postgres RDBMS to use SSL. postgres JDBC 드라이버 supports SSL connections. 그러나 잘 알려진 인증 기관 중 하나가 서명 한 인증서가 아닌 자체 서명 된 인증서를 사용하는 경우 configure your JVM to recognize your self-signed certificate or the JDBC driver not to validate certificates 중 하나 여야합니다.

configure several postgres-specific JDBC Connection Properties이 필요합니다. 이 작업을 수행하는 가장 쉬운 방법은 당신의 표준 URL 스타일 PARAMS과 같은 속성을 추가하는 것입니다 그레스 - JDBC URL :

jdbc:postgresql://myhost.mydomain/mydb?ssl=true 

또는 (위험)

jdbc:postgresql://myhost.mydomain/mydb?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory 

당신이 구성하는 경우 그 작동합니다 사용자 및 암호 (보통)를 c3p0 구성 매개 변수를 통해 확인하십시오. 또는 Properties 개체에서 모든 Connection 매개 변수를 구성 할 수 있습니다.

// obviously, imports should go where there should go 
import java.util.Properties; 
import com.mchange.v2.c3p0.ComboPooledDataSource; 

// this is very close to the postgres docs 
Properties props = new Properties(); 
props.setProperty("user", myUsername); 
props.setProperties("password", myPassword); 
props.setProperty("ssl","true"); 
props.setProperty("sslfactory","org.postgresql.ssl.NonValidatingFactory"); 

// this is c3p0-specific 
ComboPooledDataSource cpds = new ComboPooledDataSource(); 
cpds.setJdbcUrl("jdbc:postgresql://myhost.mydomain/mydb"); 
cpds.setProperties(props); 
// set any other properties you wish to override from values in config and/or defaults 

가장 쉬운 방법은, 내 생각, C3P0 설정 파일에서 바로 설정하는 jdbcUrl, 사용자 및 암호 될 것입니다 당신의 포스트 그레스 JDBC URL의 끝에 SSL을 PARAMS를 추가 : 여기에 그 C3P0를 위해 일하는 것이 어떻게 .

+0

답변 해 주셔서 감사합니다. 스티브! Tomcat JNDI 리소스를 사용하여 DB 풀을 구성하고 있습니다. 그리고 말했듯이 1) PGSQL이 SSL 연결을 허용하도록 설정합니다. 2) Tomcat JNDI 풀링의 경우 JDBC 드라이브가 SSL을 지원하므로 SSL을 사용하도록 URL 속성을 간단히 수정할 수 있습니다. 3) c3p0의 경우 초기화하는 동안 두 가지 속성을 추가합니다 SSL을 사용합니다. 나 맞아? –

+0

번호. URL 속성을 추가하면됩니다. c3p0 사용자도 JDBC 드라이버를 사용합니다. 리소스를 구성 할 때 사용자 및 비밀번호를 구성하고 나머지는 URL 등록 정보로 추가하십시오. –