2012年後半、状況は変わったようです。ドキュメントはまだまばらですが、pg gemはSSLを自動ネゴシエートしているようで、jdbcドライバーはSSLを使用するように強制できます。
私のアプリはハイブリッドMRI-jRubyアプリで、SSLを必要とするクラウドpostgresqlサーバーであるheroku-postgresにアクセスします。
# Gemfile.lock
pg (0.14.1)
activerecord-jdbc-adapter (1.2.2.1)
activerecord-jdbcpostgresql-adapter (1.2.2.1)
jdbc-postgres (9.1.901)
pg gemは、SSLを自動ネゴシエートしているようです。ただし、JDBCアダプタはそうではありませんでした。 MRIは一般的なdatabase.yml(sslについては言及されていません)に接続しましたが、JDBCは次のようにスローしました:
(FATAL: no pg_hba.conf entry for host "xx.xx.xx.xx", user "username", database "database", SSL off)
最終的に、接続の詳細をJDBC-URL形式で指定しようとしましたが、接続は成功しました:
# jruby database.yml
production:
adapter: jdbcpostgresql
url: jdbc:postgresql://host/database?user=user&password=password&ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory
(sslfactoryはすべてのセットアップに必要なわけではありません)