前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为容器化的 Postgres 数据库启用 ssl 连接

为容器化的 Postgres 数据库启用 ssl 连接

作者头像
beginor
发布2020-09-16 09:51:40
1.4K0
发布2020-09-16 09:51:40
举报
文章被收录于专栏:张志敏的技术专栏

为容器化的 Postgres 数据库启用 ssl 连接

由于项目安全评测的原因, 需要为 Postgres 数据库启用 ssl 连接, 特记录如下。

使用 openssl 生成 ssl 证书

生成证书需要 openssl 工具, 如果没有安装的话, 可以直接登录进去 Postgres 数据库的容器, 已经内置了 openssl , 而且兼容性也比较好。

生成证书的命令如下:

代码语言:javascript
复制
openssl req -new -text -passout pass:abcd -subj /CN=localhost -out server.req -keyout privkey.pem
openssl rsa -in privkey.pem -passin pass:abcd -out server.key
openssl req -x509 -in server.req -text -key server.key -out server.crt
chmod 600 server.key

上面的命令会生成 privkey.pemserver.keyserver.crt 三个文件, 这三个文件要妥善保管, 接下来就要用到这些文件。

配置 Postgres 启用 ssl 连接

需要修改 /var/lib/postgresql/data/postgresql.conf 以启用 ssl 连接, 打开这个文件, 搜索 # - SSL - , 找到 ssl 相关的配置, 需要修改的内容如下所示:

代码语言:javascript
复制
  # - SSL -
- # ssl = off
+ ssl = on
- # ssl_cert_file = ''
+ ssl_cert_file = '/var/lib/postgresql/data/server.crt'
- # ssl_key_file = ''
+ ssl_key_file = '/var/lib/postgresql/data/server.key'

修改配置文件, 需要重启数据库容器实例, 让这些修改的配置生效。

如果需要强制客户端只能使用 ssl 连接的话, 可以修改配置文件 /var/lib/postgresql/data/pg_hba.conf , 这个配置文件很简单, 也有详细的说明, 就不在多说了。 修改这个文件也是需要重启数据库实例的。

配置客户端使用 ssl 连接数据库

.NET 应用

.NET 应用一般会使用 Npgsql 来连接 Postgres 数据库, 需要修改连接字符串

代码语言:javascript
复制
var builder = new NpgsqlConnectionStringBuilder {
  Host = "localhost",
  Port = 2009,
  Database = "ssl_test",
  Username = "postgres",
  Password = "password",
  SslMode = SslMode.Require,
  TrustServerCertificate = true,
  ApplicationName = "PgSslTest"
};
var connStr = builder.ToString();
Console.WriteLine(connStr);

这样, 就可以得到标准的连接字符串, 如下所示:

代码语言:javascript
复制
Host=localhost;Port=2009;Database=ssl_test;Username=postgres;Password=password;SSL Mode=Require;Trust Server Certificate=True;Application Name=PgSslTest

由于使用的是自签名证书, 所以 TrustServerCertificate 必须为设置为 true , 否则在使用 ssl 连接数据库时会出现证书错误。

Java 应用

Java 应用使用 JDBC 连接, 似乎必须提供证书, 可以使用上面生成的 server.crt

关于 .NET 发布单文件应用

没有了

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为容器化的 Postgres 数据库启用 ssl 连接
    • 使用 openssl 生成 ssl 证书
      • 配置 Postgres 启用 ssl 连接
        • 配置客户端使用 ssl 连接数据库
          • .NET 应用
          • Java 应用
      相关产品与服务
      数据库
      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档