Na konci roku 2012 se zdá, že se věci změnily. Přestože dokumentace je stále řídká, zdá se, že drahokam pg automaticky vyjednává SSL a ovladače jdbc lze přinutit používat SSL.
Moje aplikace je hybridní aplikace MRI-jRuby, která přistupuje k heroku-postgres, cloudovému postgresql serveru, který vyžaduje 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)
Zdálo se, že klenot pg automaticky vyjednává SSL. Adaptér JDBC to však neudělal. MRI se připojilo k typické databázi.yml (bez zmínky o ssl), ale JDBC vyhodilo:
(FATAL: no pg_hba.conf entry for host "xx.xx.xx.xx", user "username", database "database", SSL off)
Nakonec jsem zkusil zadat podrobnosti připojení ve formátu JDBC-URL a připojení bylo úspěšné:
# jruby database.yml
production:
adapter: jdbcpostgresql
url: jdbc:postgresql://host/database?user=user&password=password&ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory
(sslfactory nemusí být potřeba pro všechna nastavení)