产品动态


/usr/local/pgsql/文件夹下创建.postgresql文件夹。mkdir -p /usr/local/pgsql/.postgresql
ca.pem和ca.jks拷贝到.postgresql文件夹。[root@VM-0-6-tencentos .postgresql]# lltotal 4-rw------- 1 postgres postgres 2681 Feb 6 11:13 ca.pem
.postgresql 文件夹权限。chown postgres:postgres /usr/local/pgsql/.postgresql/*chmod 600 /usr/local/pgsql/.postgresql/*
postgres 用户的环境变量。[root@VM-0-6-tencentos .postgresql]# export PGSSLROOTCERT="/usr/local/pgsql/.postgresql/ca.pem"[root@VM-0-6-tencentos .postgresql]# echo $PGSSLROOTCERT/usr/local/pgsql/.postgresql/ca.pem
[root@VM-0-6-tencentos .postgresql]# export PGSSLMODE="require"[root@VM-0-6-tencentos .postgresql]# echo $PGSSLMODErequire
[root@VM-0-6-tencentos .postgresql]# psql -h10.6.0.1 -p5432 -Udbadmin -dpostgresPassword for user dbadmin:psql (16.4, server 11.22)SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)Type "help" for help.postgres=>
SSL connection,则表示当前连接使用了 SSL 加密。/usr/local/pgsql/文件夹下创建.postgresql文件夹。mkdir -p /usr/local/pgsql/.postgresql
ca.jks拷贝到.postgresql文件夹。[root@VM-0-6-tencentos .postgresql]# lltotal 8-rw------- 1 postgres postgres 2840 Feb 6 19:55 ca.jks-rw------- 1 postgres postgres 2681 Feb 6 11:13 ca.pem
.postgresql 文件夹权限。chown postgres:postgres /usr/local/pgsql/.postgresql/*chmod 600 /usr/local/pgsql/.postgresql/*
pem 证书示例配置如下,具体参数基于您的业务详情配置。import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;import java.util.Properties;public class Main {public static void main(String[] args) {try {Class.forName("org.postgresql.Driver");Properties props = new Properties();props.setProperty("user", "xxxxxxx");props.setProperty("password", "xxxxxxxx");props.setProperty("ssl", "true");props.setProperty("sslmode", "require");props.setProperty("sslrootcert", "/usr/local/pgsql/.postgresql/ca.pem");Connection conn = DriverManager.getConnection("jdbc:postgresql://10.6.0.1:5432/postgres",props);Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery("SELECT * FROM mytable");while (rs.next()) {System.out.println(rs.getString("id"));}conn.close();} catch (Exception e) {e.printStackTrace();}}}
jks 证书示例配置如下,具体参数基于您的业务详情配置。import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;import java.util.Properties;public class Main1 {public static void main(String[] args) {try {Class.forName("org.postgresql.Driver");System.setProperty("javax.net.ssl.trustStore", "/usr/local/pgsql/.postgresql/ca.jks");System.setProperty("javax.net.ssl.trustStorePassword","tencentdb_pg");System.setProperty("javax.net.ssl.keyStore","/usr/local/pgsql/.postgresql/ca.jks");System.setProperty("javax.net.ssl.keyStorePassword","tencentdb_pg");Properties props = new Properties();props.setProperty("user", "xxxxx");props.setProperty("password", "xxxxx");props.setProperty("ssl", "true");props.setProperty("sslmode", "require");props.setProperty("sslfactory", "org.postgresql.ssl.DefaultJavaSSLFactory");Connection conn = DriverManager.getConnection("jdbc:postgresql://10.6.0.1:5432/postgres",props);Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery("SELECT * FROM mytable");while (rs.next()) {System.out.println(rs.getString("id"));}conn.close();} catch (Exception e) {e.printStackTrace();}
/usr/local/pgsql/文件夹下创建.postgresql文件夹。mkdir -p /usr/local/pgsql/.postgresql
ca.pem 拷贝到.postgresql文件夹。[root@VM-0-6-tencentos .postgresql]# lltotal 4-rw------- 1 postgres postgres 2681 Feb 6 11:13 ca.pem
.postgresql 文件夹权限。chown postgres:postgres /usr/local/pgsql/.postgresql/*chmod 600 /usr/local/pgsql/.postgresql/*
package mainimport ("database/sql""fmt""log"_ "github.com/lib/pq")func main() {connStr := "user=dbadmin password=xxxxx dbname=postgres host=10.6.0.1 port=5432 sslmode=require sslrootcert=/usr/local/pgsql/.postgresql/ca.pem"db, err := sql.Open("postgres", connStr)if err != nil {log.Fatal(err)}err = db.Ping()if err != nil {log.Fatal(err)}fmt.Println("Successfully connected!")}
/usr/local/pgsql/文件夹下创建.postgresql文件夹。mkdir -p /usr/local/pgsql/.postgresql
ca.pem 拷贝到.postgresql文件夹。[root@VM-0-6-tencentos .postgresql]# lltotal 4-rw------- 1 postgres postgres 2681 Feb 6 11:13 ca.pem
.postgresql 文件夹权限。chown postgres:postgres /usr/local/pgsql/.postgresql/*chmod 600 /usr/local/pgsql/.postgresql/*
const { Client } = require('pg');const fs = require('fs');const tls = require('tls');// 配置数据库连接参数const client = new Client({user: '****',host: '**.**.**.**',database: '*****',password: '*****',port: 5432, // 默认端口ssl: {host: '**.**.**.**',ca: fs.readFileSync('./ca.pem').toString(), // CA 证书路径},});// 连接到数据库client.connect().then(() => {console.log('Connected to PostgreSQL');// 查询 pg_stat_ssl 视图,获取当前连接的详细 SSL 信息。这里的query可以业务自定义const query = `SELECT ssl, version, cipher, bitsFROM pg_stat_sslWHERE pid = pg_backend_pid();`;return client.query(query);}).then(res => {if (res.rows.length > 0) {const sslInfo = res.rows[0];console.log('SSL connection:', sslInfo.ssl);console.log('SSL version:', sslInfo.version);console.log('SSL cipher:', sslInfo.cipher);console.log('SSL bits:', sslInfo.bits);} else {console.log('No SSL information available for this connection.');}return client.end();}).catch(err => console.error('Connection error', err.stack));



文档反馈