我想配置PostgreSQL服务器的SSL证书。 我已经创建了数据目录下的证书文件(server.crt这)和密钥(server.key)和更新参数SSL为“on”启用安全连接。
我只是想只在服务器与客户端上的服务器证书进行认证和不要求客户在服务器端的真实性。 我使用的psql作为客户端来连接和执行命令。
我使用PostgreSQL 8.4和Linux操作系统。 我用下面的命令试图连接到服务器启用SSL
psql "postgresql://localhost:2345/postgres?sslmode=require"
但我正在逐渐
psql: invalid connection option "postgresql://localhost:2345/postgres?sslmode"
我究竟做错了什么? 是我试图连接到使用SSL模式下服务器的方式启用是正确的? 它是细到只有认证服务器,而不是客户端?
请帮助我。
psql
低于9.2不接受选项此URL的语法。
使用SSL可通过驱动sslmode=value
的命令行或上选项PGSSLMODE环境变量,但默认存在prefer
,SSL连接将被首先自动尝试没有指定任何内容。
用conninfo字符串示例( 更新的PSQL 8.4)
psql "sslmode=require host=localhost dbname=test"
阅读手册页查看更多选项。
psql --set=sslmode=require -h localhost -p 2345 -U thirunas \
-d postgres -f test_schema.ddl
psql "sslmode=require host=localhost port=2345 dbname=postgres" --username=some_user
按照Postgres的PSQL文档 ,只有连接参数应该在conninfo串去(这就是为什么在我们的例子,--username不是字符串内)
psql -h <host> -p <port> -U <user> -d <db>
并更新/var/lib/pgsql/10/data/pg_hba.conf
改变AUTH方法cert
。 请检查下面的链接了解更多信息:
https://www.postgresql.org/docs/9.1/auth-pg-hba-conf.html