2012-08-06 21 views
12

我想從我的Heroku/Spring應用程序創建一個數據源到postgres.heroku.com postgres數據庫。這是我的applicationContext.xml片段。如何設置Spring/Heroku/postgres SSL數據源

<bean id="securityDataSource" class="org.apache.commons.dbcp.BasicDataSource"> 
    <property name="driverClassName" value="org.postgresql.Driver"/> 
    <property name="url" value="jdbc:postgresql://url/dstabase"/> 
    <property name="username" value="user"/> 
    <property name="password" value="password"/> 
</bean> 

但是當我運行應用程序時,Tomcat的給出了這樣的錯誤:

Cannot create PoolableConnectionFactory (FATAL: no pg_hba.conf entry for host "10.11.12.13", user "username", database "database", SSL off) 

我如何可以配置爲使用SSL?我需要它來建立一個針對postgres.heroku.com的連接。

+1

得承認我從來沒有使用PostgreSQL的或Heroku的,但我猜以下應該有所幫助:https://開頭DEVC enter.heroku.com/articles/connecting-to-relational-databases-on-heroku-with-java#connecting-to-a-database-remotely – DB5 2012-08-06 18:55:35

+0

@ DB5聽起來正確,你應該把它作爲答案 – araqnid 2012-08-06 21:16:16

+0

怎麼做你解決這個問題? – 2014-03-27 13:37:50

回答

22

你需要擴展你的JDBC連接URL和相關的ssl信息。

你的JDBC連接URL將需要包括以下內容:

ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory 

所以你的情況的網址是:

jdbc:postgresql://url/dstabase?ssl=true&amp;sslfactory=org.postgresql.ssl.NonValidatingFactory 

此信息來源:

+0

此設置打開SSL連接,但不驗證證書。如果您有機會使用這裏描述的證書:https://jdbc.postgresql.org/documentation/head/ssl-client.html – Markus 2017-10-05 12:48:58

4

當使用jdbc連接到Heroku Postgres,除非將SSL參數添加到url,否則您有時也會遇到錯誤:

ssl=true 
sslfactory=org.postgresql.ssl.NonValidatingFactory 
3

它的工作對我來說:

<bean id="securityDataSource" class="org.apache.commons.dbcp.BasicDataSource"> 
     <property name="driverClassName" value="org.postgresql.Driver"/> 
     <property name="url" value="jdbc:postgresql://host:port/database?ssl=true&amp;sslfactory=org.postgresql.ssl.NonValidatingFactory"/> 
     <property name="username" value="user"/> 
     <property name="password" value="password"/> 
    </bean> 

這個錯誤是使用&,而不是&amp;(愚蠢的我知道)

?ssl=true&amp;sslfactory=org.postgresql.ssl.NonValidatingFactory 

我在做什麼,是的鏈接肯定是有幫助: https://devcenter.heroku.com/articles/connecting-to-relational-databases-on-heroku-with-java#connecting-to-a-database-remotely

AND Keep in記: 在這個環節上,JDBC:的Postgres://主機..被使用,這可能不適合你(使用PostgreSQL的代替)如果出現沒有合適的SQL驅動程序錯誤

5

工作之後對我來說:

jdbc:postgresql://url/databaseName?sslmode=require&amp;sslfactory=org.postgresql.ssl.NonValidatingFactory 

我倒是改變ssl=truesslmode=require

+1

謝謝。這對我也有幫助... !! – 2017-10-25 13:26:35