文档结构  
翻译进度:已翻译     翻译赏金:0 元 (?)    ¥ 我要打赏

当前物联网的挑战之一就是提供最高的安全级别。这就是为什么需要在Jelastic云中开启SSL连接到 PostgreSQL。

Jelastic SSL connection

当你想要安全的存储数据到PostgreSQL数据中时,第一件事就是通过加密的连接保护身份认证凭证和存储数据被拦截。

下面,我们将对数据库服务器进行适当的调整,来开启SSL和生成证书。然后,在客户端机器上创建和添加证书,最后,通过pgAdmin 工具来建立到服务器是安全连接。让我们开始吧。

第 1 段(可获 1.56 积分)

PostgreSQL服务器配置

PostgreSQL configuration Jelastic

1. 首先,通过Jelastic SSH Gate连接到你的数据库服务器

connect to database server in Jelastic

2. 为了让SSL工作起来,需要添加下面三个文件到 /var/lib/pgsql/data 服务器目录:

  • server.key – 私钥。
  • server.crt – 服务器证书。
  • root.crt – 受信任的根证书。

在本教程中,我们将简要概述如何生成这些文件。

第 2 段(可获 1.18 积分)

提示:

  • 这里我们不会详细解释命令的参数,但如果你需要更深入的了解,可以只参考本文中的 Self-Signed Custom SSL或在官方站点OpenSSL查询更详细的说明
  • 你也可以使用 你也可以同样使用自定义SSL(custom SSL )证书 ,描述如下 (按照 生成自定义的SSL证书 部分的指导实现)。 在后者情况下,你可以直接跳过生成指令,直接跳转到第六步的指令

接下来,进入到所提到的文件夹,并继续下面的步骤。

第 3 段(可获 1.25 积分)

3. 首先,让我们创建第一个文件 — 私钥:

  • 执行如下命令:
cd /var/lib/pgsql/data openssl genrsa -des3 -out server.key 1024

verify pass SSL in Jelastic

在生成server.key文件的过程中,它会要求输入密码— 随意输入并确认。

  • 现在,为了在以后使用这个key,你需要删除在上面添加的密码。通过如下命令实现:
openssl rsa -in server.key -out server.key

configure SSL key Jelastic

再次输入密码来确认。

  • 为您的私钥文件设置适当的权限和所有权,使用如下命令:
第 4 段(可获 1.09 积分)
chmod 400 server.key chown postgres.postgres server.key

set permissions SSL in Jelastic

4. 接下来,您需要创建基于server.key文件的服务器证书, 如下:

openssl req -new -key server.key -days 3650 -out server.crt -x509 -subj '/C=US/ST=California/L=PaloAlto/O=Jelastic/CN=mysite.com/ema ilAddress=mail@jelastic.com'

create server certificate SSL Jelastic

请注意:

如果证书用于生产环境,你需要使用 

subj

 参数来设置你的个人资料:

table

 

在命令行可以使用

-subj

 参数来跳过设置,在自动打开后使用交互模式添加这些信息。

第 5 段(可获 0.79 积分)

5. 为了得到自己签名的证书,把生成的服务器证书作为受信任的根证书,只需要复制并取一个合适的名字:

cp server.crt root.crt

image16

现在,三个证书文件都有了,接下来就可以处理激活SSL以及使用它的PostgreSQL 数据库配置了。

6. 打开 pg_hba.conf 文件, 使用任意的终端编辑器(如:vim)来编辑,或者直接使用dashboard。

用以下代码替换默认的内容:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD 
# "local" is for Unix domain socket connections only local   all      all              trust 
# IPv4 local connections: host    all         all         127.0.0.1/32          trust 
# IPv4 remote connections for authenticated users hostssl all         webadmin    0.0.0.0/0             md5 clientcert=1
第 6 段(可获 1.13 积分)

SSL configuration Jelastic

提示:如果你使用的不是数据库默认的webadmin 用户,你就需要把它修改成你的对应的名称。 请注意,一旦你修改了,那后面的所有命令中用户名都要使用这个 (在哪些地方需要我会标记出来)

保存修改后的文件。

7. 为了完成配置,你需要修改postgresql.conf 文件。 

进入到安全性和身份验证 章节(大约在第80行) ,通过取消SSL前面的注释并把值修改为on来激活使用SSL。 另外,添加新的参数ssl_ca_file,如下:

第 7 段(可获 1.45 积分)
ssl = on ssl_ca_file = 'root.crt'

activate SSL in Jelastic

不要忘记在修改后保存。

8. 最后,为了让新的设置生效需要重启 PostgreSQL 服务:

sudo service postgresql restart

restart PostgreSQL Jelastic

客户端证书

接下来,我们, 让我们创建一个客户端实例组SSL证书文件来支持双方的安全连接。

1. 返回到使用SSH连接到PostgreSQL服务器终端窗口 (或者重新连接) –因为在后面还需要服务器证书。

进入后, 生成客户端的私钥(也是没有密码的,就像它是在前一节中完成的一样),例如在tmp目录中:

第 8 段(可获 1.31 积分)
openssl genrsa -des3 -out /tmp/postgresql.key 1024 openssl rsa -in /tmp/postgresql.key -out /tmp/postgresql.key

generate private key SSL Jelastic

2. 接下来,为 PostgreSQL 数据库用户(默认是 webadmin )创建SSL 证书并且使用服务器上的 root.crt 文件来签名。

openssl req -new -key /tmp/postgresql.key -out /tmp/postgresql.csr -subj '/C=US/ST=California/L=PaloAlto/O=Jelastic/CN=webadmin' openssl x509 -req -in /tmp/postgresql.csr -CA root.crt -CAkey server.key -out /tmp/postgresql.crt -CAcreateserial

注意: 

  • subj 参数中的通用性数据可以修改为你的个人资料数据,但是 Common Name (/CN=) 必须是在服务器上第一次配置证书时设置的数据库用户名 (本文示例中是 webadmin )
  • root.crt 和server.key 文件必须与执行命令的目录;否则就应该使用完整 的路径来指定。
第 9 段(可获 1.18 积分)

create SSL certificate in Jelastic

3. 在 postgresql.keypostgresql.crtroot.crt  三个文件准备好了,你需要把他们移动到客户端机器的 .postgresql 文件夹 (你可以使用 FTP add-on 或者通过复制粘贴文件内容实现). 

注意: 如果这个目录不存在,你需要创建它,如: mkdir ~/.postgresql ,或使用你操作系统上类似的命令。

PostgreSQL folder

当然,如果有必要,你可以设置仅钥匙的拥有者为只读权限,如: chmod 0400 ~/.postgresql/postgresql.key ,这样更安全。

提示: 别忘了在您的数据库服务器上把密钥从tmp目录删除。

第 10 段(可获 1.28 积分)

通过PgAdmin建立连接

最后,服务器和客户端都配置好了以后,你就可以建立连接了。 在本例中,我们将使用 pgAdmin 3 工具来演示,因此你需要先安装这个软件 (或其它类似软件)。

1. 为了通过SSL连接到DB服务器,在你的PostgreSQL数据库容器上需要一个公共IP或端点(Public IP 或endpoint )。

add endpoint in Jelastic

第 11 段(可获 1.18 积分)

server registration SSL Jelastic

在打开的窗口中 Properties选项卡中,需要指定如下信息:

  • Name: 任何想要的连接名 (如:ssl-to-pgsql)。
  • Host: 在第一步中添加的访问点 (公共IP地址没有端口号的端点访问URL).
  • Port:外部IP使用的默认端口为 5432 或端点的公共端口(在适当的列的同一个指定的部分中表示).
  • Username: 设置在SSL证书和配置信息中的数据库用户 (如默认的webadmin )。
  • Password: 数据库用户的相应密码(通过电子邮件发送的webadmin或你自己设置的).
第 12 段(可获 1.49 积分)

其余的字段可以保持不变或根据你的要求调整。

switch to SSL

完美! 在第一次建立连接时证书会自动载入,因此你只需要点击 OK 开始使用安全连接管理数据库。

现在您可以将您的应用程序绑定到数据库(使用 Connect to Database 指南) ,使用SSL配置来对项目中传输的数据进行加密。 如果你有任何配置问题,请在 StackOverflow上向我们的专家寻求帮助。

所以,为确保您的项目安全 – 您只需选择Jelastic云联盟的云托管服务,它是免费注册的哟! 

第 13 段(可获 1.68 积分)

文章评论