![](top1.jpg)
![](top2.jpg)
设置 MySQL 或 PostgreSQL 的 SSL 证书
要创建服务器或客户端证书,用 root 登录 Linux 服务器并使用 Shell 命令如下:
MySQL
- DIR=`pwd`/openssl
- PRIV=$DIR/private
- mkdir $DIR $PRIV $DIR/newcerts
- cp /usr/share/ssl/openssl.cnf $DIR
- replace ./demoCA $DIR -- $DIR/openssl.cnf
- 生成 Certificate Authority (CA)
/usr/local/ssl/bin/openssl req -new -x509 -keyout $PRIV/cakey.pem -out $DIR/cacert.pem -config $DIR/openssl.cnf
注意:如果「PEM」是需要的,请通过以下步骤输入另外的「PEM pass」。 - 创建服务器的请求和密钥
/usr/local/ssl/bin/openssl req -new -keyout $DIR/server-key.pem -out $DIR/server-req.pem -days 3600 -config $DIR/openssl.cnf
- 从密钥移除密码短语(非必须的)
/usr/local/ssl/bin/openssl rsa -in $DIR/server-key.pem -out $DIR/server-key.pem
- 签署服务器证书
/usr/local/ssl/bin/openssl ca -policy policy_anything -out $DIR/server-cert.pem -config $DIR/openssl.cnf -infiles $DIR/server-req.pem
- 创建客户端的请求和密钥
/usr/local/ssl/bin/openssl req -new -keyout $DIR/client-key.pem -out $DIR/client-req.pem -days 3600 -config $DIR/openssl.cnf
- 从密钥移除密码短语(非必须的)
/usr/local/ssl/bin/openssl rsa -in $DIR/client-key.pem -out $DIR/client-key.pem
- 签署客户端证书
/usr/local/ssl/bin/openssl ca -policy policy_anything -out $DIR/client-cert.pem -config $DIR/openssl.cnf -infiles $DIR/client-req.pem
- 创建一个 my.cnf 文件来测试证书。 保存于 /etc 或 MySQL 数据目录(通常在源安装的 /usr/local/var)
my.cnf 范例属性:
[client]
ssl-ca=$DIR/cacert.pem
ssl-cert=$DIR/client-cert.pem
ssl-key=$DIR/client-key.pem
[mysqld]
ssl-ca=$DIR/cacert.pem
ssl-cert=$DIR/server-cert.pem
ssl-key=$DIR/server-key.pem - 要开始 MySQL 程序类型:
/usr/local/libexec/mysqld -u mysql &
or
/usr/local/sbin/mysqld -u &
PostgreSQL
- 要创建一个服务器的快速自签署证书,使用以下的 OpenSSL 命令:
openssl req -new -text -out server.reqm
- 填写 openssl 要求的信息。请确认你输入的本机主机名为「Common Name」;要求的密码可以留空。程序会生成一个密码保护的密钥;它不会接受一个少于 4 个字符长度的密码短语。要移除密码短语(你必须,如果你想要自动启动的服务器),运行命令:
openssl rsa -in privkey.pem -out server.key
rm privkey.pem - 输入旧的密码短语来解开现有的密钥。现在做的:
openssl req -x509 -in server.req -text -key server.key -out server.crt
- 将证书变为自签署证书和复制密钥及证书到服务器将在那裹查找他们。最后做:
chmod og-rwx server.key