2.7.?用SSL进行安全的TCP/IP连接

2.7.1. 使用客户端证书
2.7.2. SSL服务器文件用法
2.7.3. 创建自签名的证书

UXDB有一个对使用SSL连接加密客户端/服务器通讯的本地支持,它可以增加安全性。这个特性要求在客户端和服务器端都安装OpenSSL并且打开这个支持。

当安装OpenSSL后,可以通过将uxsinodb.conf中的ssl设置为on打开UXDB服务器的SSL支持。服务器在同一个TCP端口监听普通连接和SSL连接,并且将与任何正在连接的客户端协商是否使用SSL。默认情况下,这是根据客户端的选项而定的,关于如何设置服务器来要求某些或者所有连接使用SSL请见第?4.1?节

UXDB读取系统范围的OpenSSL配置文件。默认情况下,这个文件名为openssl.cnf并且被放置在openssl version -d所报告的目录中。通过设置环境变量OPENSSL_CONF指定想要的配置文件名可以覆盖此默认配置。

OpenSSL支持范围广泛的密码和认证算法。而在OpenSSL配置文件可以指定一个密码列表, 你可以通过在uxsinodb.conf中修改ssl_ciphers来指定数据库服务器使用的专用密码。

注意

使用NULL-SHANULL-MD5可以得到身份验证但没有加密开销。不过,中间人能够读取和传递客户端和服务器之间的通信。此外,加密开销相比身份认证的开销是最小的。出于这些原因,澳门游戏平台注册网站建议不要使用NULL密码。

SSL模式中启动服务器,服务器证书和私钥的文件必须存在。默认情况下,这些文件应该分别被命名为server.crtserver.key并且被放在服务器的数据目录中,但是可以通过配置参数ssl_cert_filessl_key_file指定其他名称和位置。

在Unix系统上,server.key上的权限必须不允许所有人或组的任何访问,通过命令chmod 0600 server.key可以做到。或者,该文件可以由root所拥有并且具有组读访问(也就是0640权限)。这种设置适用于由操作系统管理证书和密钥文件的安装。用于运行UXDB服务器的用户应该被作为能够访问那些证书和密钥文件的组成员。

如果私钥被一个密码保护着,服务器将提示输入这个密码,并且在它被输入前不会启动。 使用密码还会禁用在不重启服务器的情况下更改服务器的SSL配置的功能。 此外,在Windows上,密码保护的私钥无法使用。

在有些情况下,服务器证书可能由一个中间证书颁发机构签名,而不是直接由客户端信任的证书颁发机构签名。要使用这样的证书,请追加该签发权的证书到server.crt文件,然后追加其父签发权的证书,以此类推一直到一个被客户端所信任的中间颁发机构,即由一个位于客户端root.crt文件中的证书签发。

2.7.1.?使用客户端证书

要求客户端提供受信任的证书,把信任的证书颁发机构(CA)的证书放置在数据目录的文件root.crt中。并且修改uxsinodb.conf中的参数ssl_ca_fileroot.crt,还要把认证选项clientcert=1加入到ux_hba.conf文件中合适的hostssl行上。然后将在SSL连接启动时从客户端请求该证书。服务器将验证客户端的证书是否由受信任的证书颁发机构之一签名。

如果中间CA出现在root.crt中,该文件必须也包含到它们的根CA的证书链。如果参数ssl_ca_file被设置,证书撤销列表(CRL)项也要被检查。

clientcert认证选项适用于所有的认证方法,但仅适用于ux_hba.conf中用hostssl指定的行。 当clientcert没有指定或设置为 0时,如果配置了 CA 文件,服务器将仍然会根据它验证任何提交的客户端证书 — 但是它将不会坚持要求出示一个客户端证书。

请注意服务器的root.crt列出了顶级的CA,它们对客户端证书的签名被认为是可信的。 原则上不需要列出签名服务器证书的CA,然而在大多数情况下,这些CA对于客户端证书也是可信的。

如果你在设置客户端证书,你可能希望用cert认证方法,这样证书控制用户认证以及提供连接安全。详见第?4.3.9?节(在使用cert认证方法时,没有必要显式地指定clientcert=1)。

2.7.2.?SSL服务器文件用法

表?2.2总结了与服务器上SSL配置有关的文件(显示的文件名是默认的或者是惯用名称。本地配置的名称可能会不同)。

表?2.2.?SSL 服务器文件用法

文件内容效果
ssl_cert_file ($UXDATA/server.crt)服务器证书发送给客户端来说明服务器的身份
ssl_key_file ($UXDATA/server.key)服务器私钥证明服务器证书是其所有者发送的,并不说明证书所有者是值得信任的
ssl_ca_file ($UXDATA/root.crt)可信的证书颁发机构检查客户端证书是由一个可信的证书颁发机构签名的
ssl_crl_file ($UXDATA/root.crl)被证书授权机构撤销的证书客户端证书不能出现在这个列表上

服务器在服务器启动时以及服务器配置重新加载时读取这些文件。 在Windows系统上,只要为新客户端连接生成新的后端进程, 它们也会重新读取。

如果在服务器启动时检测到这些文件中的错误,服务器将拒绝启动。但是,如果在配置重新加载过程中检测到错误,则会忽略这些文件,并继续使用旧的SSL配置。在Windows系统上,如果在后端启动时检测到这些文件中存在错误,则该后端将无法建立SSL连接。所有的错误情况都会在服务器日志中报告。

2.7.3.?创建自签名的证书

要为服务器创建一个有效期为365天的快速自签名证书, 可以使用下面的OpenSSL命令, 将yourdomain.com替换为服务器的主机名:

openssl req -new -x509 -days 365 -nodes -text -out server.crt \
  -keyout server.key -subj "/CN=yourdomain.com"

然后执行:

chmod og-rwx server.key

因为如果其权限比这更高,服务器将拒绝该文件。

自签名的证书可以被用于测试,但由证书颁发机构(CA)(要么是全局CA中的一个或者一个本地 CA)签名的证书应该被用在生产中,这样客户端可以验证服务器的身份。如果对于组织来说所有的客户端都是本地的,建议使用本地CA

XML 地图 | Sitemap 地图