title: How to connect with PostgreSQL database over SSL?
body: <p>I have created my own certificate and configured <code>postgresql.conf</code> file:</p>
  
  <pre><code>...
  #authentication_timeout = 1min          # 1s-600s
  ssl = true                              # (change requires restart)
  ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL' # allowed SSL ciphers
                                          # (change requires restart)
  #ssl_prefer_server_ciphers = on         # (change requires restart)
  #ssl_ecdh_curve = 'prime256v1'          # (change requires restart)
  ssl_cert_file = '/etc/ssl/certs/company/database/certificate'           # (change requires restart)
  ssl_key_file = '/etc/ssl/certs/company/database/key'            # (change requires restart)
  ssl_ca_file = '/usr/share/ca-certificates/company/ca/certificate'                        # (change requires restart)
  #ssl_crl_file = ''                      # (change requires restart)
  #password_encryption = on
  #db_user_namespace = off
  #row_security = on
  ...
  </code></pre>
  
  <p>Then, I allow my server to connect with my database, <code>pg_hba.conf</code>:</p>
  
  <pre><code>...
  hostssl    postgres             postgres             XXX.XXX.XXX.XXX/0            md5
  ...
  </code></pre>
  
  <p>So, I can connect to it via <code>psql</code> command line:</p>
  
  <pre><code>psql (9.5.3)
  SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
  Type "help" for help.
  
  postgres=#
  </code></pre>
  
  <p>But, when I try to open a connection with the database via my java application, <strong>even when I provide the truststore with my database certificate included</strong>, I keep getting no connection with it:</p>
  
  <pre><code>mvn package -Djavax.net.ssl.trustStore=/opt/app/truststore -Djavax.net.ssl.trustStorePassword=changeit
  </code></pre>
  
  <p>Exception:</p>
  
  <pre><code>2016-05-23 16:28:32,900 WARN [com.mchange.v2.resourcepool.BasicResourcePool] - &lt;Having failed to acquire a resource, com.mchange.v2.resourcepool.BasicResourcePool@75fa1be3 is interrupting all Threads waiting on a resource to check out. Will try again in response to new client requests.&gt;
  2016-05-23 16:28:32,900 WARN [com.mchange.v2.resourcepool.BasicResourcePool] - &lt;com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@2be057bf -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception: &gt;
  java.lang.NullPointerException
      at org.postgresql.Driver.parseURL(Driver.java:532)
      at org.postgresql.Driver.acceptsURL(Driver.java:431)
      at java.sql.DriverManager.getDriver(DriverManager.java:299)
      at com.mchange.v2.c3p0.DriverManagerDataSource.driver(DriverManagerDataSource.java:285)
      at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:161)
      at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:161)
      at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:147)
      at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:202)
      at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138)
      at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125)
      at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)
      at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870)
      at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)
  2016-05-23 16:28:32,901 WARN [com.mchange.v2.resourcepool.BasicResourcePool] - &lt;Having failed to acquire a resource, com.mchange.v2.resourcepool.BasicResourcePool@75fa1be3 is interrupting all Threads waiting on a resource to check out. Will try again in response to new client requests.&gt;
  </code></pre>
  
  <p>Via <code>psql</code> everything seems to be working fine, not with my application.
  Any suggestion ?</p>
  
  <p><strong>EDIT:</strong></p>
  
  <p>My <code>props.properties</code> file:</p>
  
  <pre><code>uatDb.user=postgres
  uatDb.password=password
  uatDb.driverClass=org.postgresql.Driver
  uatDb.jdbcUrl=jdbc:postgresql://&lt;server_name&gt;:1234/uat?ssl=true
  uatDb.port=5443
  uatDb.name=uat
  uatDb.host=&lt;server_name&gt;
  </code></pre>