在保安方面我不太了解。我正在云服务中部署一个带有数据库的虚拟机。我想加密此服务器与任何客户端之间的所有通信。我怎么能这么做?
更多信息:我从postgres文档[1,2]中阅读了很多材料,但我无法理解其中的内容。我跟踪了本教程,现在我有了以下文件:
valter@eniac:test$ ll
total 28
drwxr-xr-x 2 valter valter 4096 Jan 25 12:54 ./
drwxr-xr-x 3 root root 4096 Jan 25 12:50 ../
-rw-rw-r-- 1 valter valter 1834 Jan 25 12:53 privkey.pem
-rw-rw-r-- 1 valter valter 4783 Jan 25 12:54 server.crt
-rw------- 1 valter valter 1675 Jan 25 12:53 server.key
-rw-rw-r-- 1 valter valter 3672 Jan 25 12:53 server.req但我不知道该怎么处置他们。root.crt和root.crt文件在哪里?我怎样才能产生它们?我把这些生成的文件放在哪里?在客户端我该怎么做?
发布于 2016-01-25 17:43:48
您只想在服务器上使用客户端用于验证服务器的证书吗?(这是正常的运作方式)。然后,服务器使用密码挑战对客户机进行身份验证,就像不使用ssl一样。
还是要使用客户端证书对服务器以及服务器对客户端进行身份验证?这很少见,因为它要求证书颁发机构向所有用户颁发证书,并要求用户正确管理证书。
假设是第一个,您就不需要服务器上的root.crt文件。现在所需要做的就是编辑postgresql.conf以转换ssl=on,并编辑pg_hba.conf以要求或允许客户端使用ssl (hostssl需要它,或者host允许它)。
请注意,使用默认的客户端配置(至少如果客户端是psql),您真正从使用ssl获得的只是加密,而不是真正的服务器身份验证。这是因为客户机只接受服务器发送的任何证书,并使用该证书设置加密通道。因此,坏人可以使用自签名证书运行PostgreSQL服务器,如果它可以欺骗客户端连接到它,而不是真正的PostgreSQL服务器,那么他们会很高兴地连接到它并向它发送查询。
https://dba.stackexchange.com/questions/127210
复制相似问题