在配置了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进行连接。