Ho trovato il problema. Semplicemente passando
ssl = true
non è sufficiente per JDBC, devi anche installare i certificati radice corretti nel tuo keystore Java in modo che PgJDBC possa verificare il certificato remoto.
Se non vuoi configurare l'archivio dei certificati radice puoi invece passare:
ssl = true
sslfactory = org.postgresql.ssl.NonValidatingFactory
ciò nonostante disabilita la protezione dagli attacchi man-in-the-middle , quindi la tua sessione SSL non ha più una sicurezza end-to-end affidabile.
Vedi i documenti di Heroku qui:
(Avviso sulla sicurezza SSL aggiunta da Craig Ringer)