Eind 2012 lijkt er verandering te komen. Hoewel de documentatie nog steeds schaars is, lijkt de pg-edelsteen automatisch te onderhandelen over SSL en kunnen de jdbc-stuurprogramma's worden gedwongen om SSL te gebruiken.
Mijn app is een hybride MRI-jRuby-app die toegang heeft tot heroku-postgres, een cloud-postgresql-server die SSL vereist.
# 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)
De pg-edelsteen leek automatisch te onderhandelen over SSL. De JDBC-adapter deed dat echter niet. MRI verbonden met een typische database.yml (geen melding gemaakt van ssl), maar JDBC gooide:
(FATAL: no pg_hba.conf entry for host "xx.xx.xx.xx", user "username", database "database", SSL off)
Ik heb uiteindelijk geprobeerd de verbindingsdetails op te geven in JDBC-URL-formaat, en de verbinding is gelukt:
# jruby database.yml
production:
adapter: jdbcpostgresql
url: jdbc:postgresql://host/database?user=user&password=password&ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory
(sslfactory is mogelijk niet voor alle setups nodig)