Di penghujung tahun 2012, keadaan tampaknya telah berubah. Meskipun dokumentasi masih jarang, permata pg tampaknya melakukan negosiasi otomatis SSL, dan driver jdbc dapat dipaksa untuk menggunakan SSL.
Aplikasi saya adalah aplikasi hybrid MRI-jRuby, yang mengakses heroku-postgres, server cloud postgresql yang memerlukan SSL.
# 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)
Permata pg, tampaknya melakukan negosiasi otomatis SSL. Namun, adaptor JDBC tidak. MRI terhubung dengan database.yml khas (tidak menyebutkan ssl), tetapi JDBC melemparkan:
(FATAL: no pg_hba.conf entry for host "xx.xx.xx.xx", user "username", database "database", SSL off)
Saya akhirnya mencoba menentukan detail koneksi dalam format JDBC-URL, dan koneksi berhasil:
# jruby database.yml
production:
adapter: jdbcpostgresql
url: jdbc:postgresql://host/database?user=user&password=password&ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory
(sslfactory mungkin tidak diperlukan untuk semua penyiapan)