首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tomcat连接池上的SSL

Tomcat连接池上的SSL
EN

Stack Overflow用户
提问于 2014-04-14 18:48:34
回答 1查看 5.3K关注 0票数 3

我做了很多搜索,但还是找不到解决办法。

在我的项目中,我为postgresql使用Tomcat连接池和C3P0连接池。我拒绝使用JDBC连接池,因为postgresql没有正式建议使用它。

现在,我需要在这些池上启用SSL/TLS。我觉得这应该是个很普遍的需求。我找到了关于JDBC池的例子,但没有针对tomcat或c3p0。我真的想知道tomcat和c3p0池是否可以配置SSL!

有人在这个话题上有什么我可以参考的资源吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-15 05:34:57

SSL传输应该对c3p0非常透明。只有设置postgres RDBMS以使用SSL。postgres驱动程序支持SSL连接。。但是,如果使用的是自签名证书(而不是由知名证书颁发机构签名的证书),则必须使用将JVM配置为识别自签名证书或JDBC驱动程序以不验证证书。

你需要配置几个特定于postgres的JDBC连接属性。最简单的方法是将这些属性作为标准URL样式的参数追加到postgres:

代码语言:javascript
复制
jdbc:postgresql://myhost.mydomain/mydb?ssl=true

或(危险)

代码语言:javascript
复制
jdbc:postgresql://myhost.mydomain/mydb?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory

如果您正在通过c3p0配置参数配置用户和密码(通常情况下),这些方法应该可以工作。或者,您可以在Properties对象中配置所有连接参数。下面是对c3p0的工作方式:

代码语言:javascript
复制
// 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

我认为,最简单的方法是在jdbcUrl配置文件中设置c3p0、用户和密码,并将ssl附加到postgres的末尾。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23067876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档