在配置了SSL的PostgreSQL数据库中,可以通过设置sslmode
参数来调整客户端与服务器之间的SSL连接要求。sslmode
参数有几个不同的值,可以根据需要选择。下面是sslmode
的一些选项及其说明:
- disable:
- SSL完全禁用。客户端将不会尝试使用SSL连接到服务器。
- allow:
- 如果服务器要求,客户端将尝试使用SSL,但如果服务器不支持SSL,客户端也将接受不使用SSL的连接。
- prefer(默认):
- 客户端将首先尝试使用SSL连接,但如果服务器不支持SSL,客户端也将接受不使用SSL的连接。
- require:
- 客户端只接受通过SSL的连接。如果服务器不支持SSL,连接将失败。
- verify-ca 或 verify-full:
- 这些模式要求SSL连接,并且客户端将验证服务器的证书。
对于不想要求客户端提供证书的情况,可以在客户端的连接字符串或配置中设置sslmode
为allow
、prefer
或require
。例如,使用psql
命令行工具时,可以这样做:
psql "host=myserver port=5432 dbname=mydb user=myuser password=mypass sslmode=require"
或者在其它语言的SDK中,通常也会有类似的配置选项来设置sslmode
。
例如,在Go语言的pq
库中,可以在连接字符串中设置sslmode
:
connStr := "user=username dbname=mydb sslmode=require"
db, err := sql.Open("postgres", connStr)
在服务器端,如果想要允许无SSL连接,应确保pg_hba.conf
文件中的相应条目没有hostssl
关键字,而应该是host
。例如:
# 允许所有客户端,无论是否使用SSL,都能连接到数据库
host all all 0.0.0.0/0 md5
这样,即使数据库服务器配置了SSL,客户端也可以选择不使用SSL进行连接。