2011-03-22 70 views
1

我正在嘗試從ColdFusion 8企業客戶端到Redhat 5 Postgres服務器的SSL連接。另一方成立了Postgres並向我發送了證書。CF8 SSL連接到Postgres失敗

  1. 我進口root.crt中E:\ JRun4 \ JRE \ lib \ security中\ cacerts中成功並重新啓動該服務。
  2. Postgres的pg_hba.conf文件具有客戶端IP,並且不使用SSL連接細
  3. postgresql.conf中有SSL =上
  4. 服務器端的證書是根據http://www.postgresql.org/docs/8.2/static/ssl-tcp.html和presumingly做正確的創建。

啓用SSL後,我得到org.postgresql.util.PSQLException:連接嘗試失敗。它從我所做的搜索中產生很少有用的信息。

JDBC網址爲:jdbc:在PostgreSQL:// XXXX /主SSL =真
類:org.postgresql.Driver

什麼可以做,看看/測試,如果誤差源是在我結束或服務器端?

+0

大概OT(但是誰知道):你爲什麼要閱讀Postgres的未發佈版本的文檔? – 2011-03-22 18:46:31

+0

這是一個很好的問題,但內容與http://www.postgresql.org/docs/8.2/static/ssl-tcp.html基本相同。但是,我會修改鏈接。 – 2011-03-22 20:16:51

回答

2

明顯的問題進行故障排除這樣的事情入手是:

  1. 你能使用SSL連接使用PSQL啓用?

  2. 在postgresql日誌中是否有任何感興趣的東西?

  3. 如果這不起作用,有沒有辦法根據root ca的簽名來測試證書?

  4. 如果失敗了,我唯一能想到的就是跟蹤客戶端並確切地看到SSL庫中失敗的位置。

+0

你當然值得尋找已久被遺忘的問題的道具。我前一陣子解決了這個問題,但是我會試着挖掘我的筆記,說明我是如何做到的,並將它們發佈在這裏。 – 2013-03-22 11:48:48

1

我找到了解決這個問題的筆記。請注意,驅動器和文件夾路徑可能與您的設置不同。

  1. 複製server.crt.der目標服務器
  2. 打開您的目標服務器的命令窗口,並轉到E:\ Jrun4 \ JRE \ BIN \
  3. 鍵入以下命令:keytool -importcert -alias postgres -keystore e:\jrun4\jre\lib\security\cacerts -file c:\location\of\server.crt -storepass changeit
  4. 它會提示您是否應該信任此證書;答案是
  5. 要驗證它是否成功安裝,請鍵入:keytool -list -alias postgres -keystore e:\jrun4\jre\lib\security\cacerts -storepass changeit。如果成功的話,你會看到該別名單一的上市回報,否則它會說沒有發現
  6. 證書已被存儲,你可以從服務器刪除實際的證書文件
  7. 重新啓動ColdFusion服務的客戶端機器上