Wydaje się, że pod koniec 2012 roku wszystko się zmieniło. Chociaż dokumentacja jest wciąż skąpa, gem pg wydaje się automatycznie negocjować SSL, a sterowniki jdbc można zmusić do korzystania z SSL.
Moja aplikacja to hybrydowa aplikacja MRI-jRuby, która uzyskuje dostęp do heroku-postgres, serwera postgresql w chmurze, który wymaga 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)
Klejnot PG wydawał się automatycznie negocjować SSL. Jednak adapter JDBC nie. MRI połączone z typowym database.yml (brak wzmianki o ssl), ale JDBC rzucił:
(FATAL: no pg_hba.conf entry for host "xx.xx.xx.xx", user "username", database "database", SSL off)
W końcu spróbowałem określić szczegóły połączenia w formacie JDBC-URL i połączenie się powiodło:
# jruby database.yml
production:
adapter: jdbcpostgresql
url: jdbc:postgresql://host/database?user=user&password=password&ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory
(sslfactory może nie być potrzebne dla wszystkich konfiguracji)