【问题标题】:SSL on Tomcat connection poolTomcat 连接池上的 SSL
【发布时间】:2014-04-14 18:48:34
【问题描述】:

我已经做了很多搜索,但仍然找不到解决方案。

在我的项目中,我将 Tomcat 连接池和 C3P0 连接池用于 postgresql。我拒绝使用 JDBC 连接池,因为 postgresql 官方没有建议。

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

有没有人可以参考这个主题的任何资源?

【问题讨论】:

    标签: ssl tomcat7 connection-pooling postgresql-9.1 c3p0


    【解决方案1】:

    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 样式参数附加到您的 postgres-jdbc URL:

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

    或者(危险地)

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

    如果您通过 c3p0 配置参数配置用户和密码(像往常一样),这些应该可以工作。或者,您可以在 Properties 对象中配置所有 Connection 参数。以下是 c3p0 的工作原理:

    // 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、用户和密码,并将 ssl 参数附加到 postgres jdbc URL 的末尾。

    【讨论】:

    • 感谢史蒂夫的回答!我正在使用 Tomcat JNDI 资源来配置数据库池。正如你所说,1)设置 PGSQL 以接受 SSL 连接,2)对于 Tomcat JNDI 池,JDBC 驱动器支持 SSL,所以我可以简单地修改 URL 属性以使用 SSL,3)对于 c3p0,在初始化期间添加两个属性启用 SSL。我说的对吗?
    • 没有。您可以只添加 URL 属性。 c3p0 也使用 JDBC 驱动程序。在您配置资源的位置配置用户和密码,将其余部分添加为 URL 属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    相关资源
    最近更新 更多