I'm running a Strapi application connected to a PostgreSQL database on DigitalOcean, but I'm encountering a "self-signed certificate" error. Despite correctly setting the DATABASE_SSL environment variable and using the DigitalOcean provided CA certificate in my config/database.js file, I still face SSL verification issues when trying to connect to the database.
I'm looking for solutions to resolve this SSL certificate trust issue in a Strapi-PostgreSQL setup.
│ Error: self-signed certificate │
│ at TLSSocket.onConnectSecure (node:_tls_wrap:1545:34) │
│ at TLSSocket.emit (node:events:513:28) │
│ at TLSSocket.emit (node:domain:489:12) │
│ at TLSSocket._finishInit (node:_tls_wrap:959:8) │
│ at ssl.onhandshakedone (node:_tls_wrap:743:12)
Code
var fs = require('fs');
module.exports = ({ env }) => ({
connection: {
client: 'postgres',
connection: {
host: env('DATABASE_HOST'),
port: env.int('DATABASE_PORT'),
database: env('DATABASE_NAME', 'strapi'),
user: env('DATABASE_USERNAME','strapi'),
password: env('DATABASE_PASSWORD','strapi'),
ssl: env.bool('DATABASE_SSL', false) ? {
rejectUnauthorized: env.bool('DATABASE_SSL_REJECT_UNAUTHORIZED', false),
ca: fs.readFileSync(env('PATH_TO_CA_CERT')).toString(),
} : undefined,
},
acquireConnectionTimeout: 1000000,
pool: {
min: 0,
max: 4,
acquireTimeoutMillis: 300000,
createTimeoutMillis: 300000,
destroyTimeoutMillis: 300000,
idleTimeoutMillis: 30000,
reapIntervalMillis:1000,
createRetryIntervalMillis: 2000
},
},
});