主页 > 古玩收藏

ssl连接介绍(如何配置)

云基奔 2024-01-12 07:32:03

摘要:本文描述了如何配置您的服务器以将SSL用于MySQL®数据库连接。保护MySQL连接后,恶意用户无法拦截您的MySQL流量。重要:您必须拥有对客户端和主机服务器的root访问

本文描述了如何配置您的服务器以将 SSL 用于 MySQL® 数据库连接。 保护 MySQL 连接后,恶意用户无法拦截您的 MySQL 流量。

重要:您必须拥有对客户端和主机服务器的 root 访问权限才能完成。

创建目录以存储 SSL 密钥

要创建将包含 SSL 密钥的目录,请执行以下步骤:

  1. 通过 SSH 登录到您的服务器。
  2. 创建一个 MySQL 可以访问的 SSL 密钥存储目录。 例如,运行 mkdir /mysql_keys 命令创建一个 mysql_keys 目录。

创建 SSL 密钥

注意:

  • 在以下示例中,/mysql_keys 表示密钥存储目录。
  • 客户端和服务器的证书和密钥的通用名称必须与 CA 证书的通用名称不同。 相同的通用名称将失败并显示类似于以下内容的错误:

ERROR 2026 (HY000): SSL connection error: error:00000001:lib(0):func(0):reason(1)

要创建 SSL 密钥,请执行以下步骤:

1 运行以下命令以创建证书颁发机构 (CA) 密钥:

openssl genrsa 2048 > /mysql_keys/ca-key.pem openssl req -sha1 -new -x509 -nodes -days 3650 -key /mysql_keys/ca-key.pem > /mysql_keys/ca-cert.pem

2 运行以下命令以创建服务器 SSL 密钥和证书:

openssl req -sha1 -newkey rsa:2048 -days 3650 -nodes -keyout /mysql_keys/server-key.pem > /mysql_keys/server-req.pemopenssl x509 -sha1 -req -in /mysql_keys/server-req.pem -days 3650 -CA /mysql_keys/ca-cert.pem -CAkey /mysql_keys/ca-key.pem -set_serial 01 > /mysql_keys/server-cert.pemopenssl rsa -in /mysql_keys/server-key.pem -out /mysql_keys/server-key.pem

3 运行以下命令以创建客户端 SSL 密钥和证书:

openssl req -sha1 -newkey rsa:2048 -days 3650 -nodes -keyout /mysql_keys/client-key.pem > /mysql_keys/client-req.pemopenssl x509 -sha1 -req -in /mysql_keys/client-req.pem -days 3650 -CA /mysql_keys/ca-cert.pem -CAkey /mysql_keys/ca-key.pem -set_serial 01 > /mysql_keys/client-cert.pemopenssl rsa -in /mysql_keys/client-key.pem -out /mysql_keys/client-key.pem

编辑 MySQL 配置

要编辑 MySQL 配置,请执行以下步骤:

1 使用您喜欢的文本编辑器打开 /etc/my.cnf 文件。

2 在 my.cnf 文件的 [mysqld] 部分插入以下行:

sslssl-cipher=DHE-RSA-AES256-SHAssl-ca=/mysql_keys/ca-cert.pemssl-cert=/mysql_keys/server-cert.pemssl-key=/mysql_keys/server-key.pem

3 在 my.cnf 文件的 [client] 部分插入以下行:

注意: 如果 [client] 部分不存在,则必须添加 [client] 部分。

[client] ssl-mode=REQUIRED ssl-cert=/mysql_keys/client-cert.pem ssl-key=/mysql_keys/client-key.pem

您更新的 my.cnf 文件应类似于以下示例:

[mysqld] max_connections=500 log-slow-queries max_allowed_packet=268435456 open_files_limit=10000 default-storage-engine=MyISAM innodb_file_per_table=1 performance-schema=0 ssl ssl-cipher=DHE-RSA-AES256-SHA ssl-ca=/mysql_keys/ca-cert.pem ssl-cert=/mysql_keys/server-cert.pem ssl-key=/mysql_keys/server-key.pem[client] ssl-mode=REQUIRED ssl-cert=/mysql_keys/client-cert.pem ssl-key=/mysql_keys/client-key.pem

  • 如果服务器支持加密连接,则 ssl-mode=REQUIRED 设置将创建加密连接。 如果服务器无法创建加密连接,则连接将失败。
  • MySQL 在 MySQL 5.7 中引入了 ssl-mode 设置。 如果您运行 MySQL 5.6 或更早版本,请将 ssl-mode=REQUIRED 替换为 ssl。

4 将更改保存到 /etc/my.cnf 文件并退出文本编辑器。

5 运行以下命令更新 /mysql_keys 目录及其文件的文件权限:

chown -Rf mysql. /mysql_keys

6 运行 /scripts/restartsrv_mysql 脚本重新启动 MySQL。

测试 SSL 配置

要测试 SSL 配置,请执行以下步骤:

1 要查看 MySQL 的活动 SSL 配置,请运行以下命令:

mysql -e "show variables like '%ssl%';"

输出将类似于以下示例:

+---------------+------------------------+ | Variable_name | Value | +---------------+------------------------+ | have_openssl | YES | | have_ssl | YES | | ssl_ca | /mysql_keys/ca-cert.pem | | ssl_capath | | | ssl_cert | /mysql_keys/server-cert.pem | | ssl_cipher | DHE-RSA-AES256-SHA | | ssl_key | /mysql_keys/server-key.pem | +---------------+------------------------+

2 要检查到 MySQL 的本地连接,请运行以下命令,其中 example 表示 cPanel 账户用户名:

mysql -u example -p

3 当系统提示时,输入 MySQL 用户账户密码。

4 连接后,运行 status 命令。 输出将类似于以下示例:

mysql> status -------------- mysql Ver 14.14 Distrib 5.5.42, for Linux (x86_64) using readline 5.1 Connection id: 19 Current database: Current user: example@localhost SSL: Cipher in use is DHE-RSA-AES256-SHA Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.5.42-cll MySQL Community Server (GPL) Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: latin1 Db characterset: latin1 Client characterset: utf8 Conn. characterset: utf8 UNIX socket: /var/lib/mysql/mysql.sock Uptime: 4 min 36 sec Threads: 1 Questions: 67 Slow queries: 0 Opens: 34 Flush tables: 1 Open tables: 27 Queries per second avg: 0.242 --------------

创建用户并允许远程访问

注意:这一步是可选的

要创建用户并允许远程访问,请执行以下步骤:

1 导航到 cPanel 的 MySQL 数据库界面(cPanel >> 主页 >> 数据库 >> MySQL 数据库)并创建您的数据库用户。

2 将远程服务器的 IP 地址添加到 WHM 的远程 MySQL 界面(cPanel >> 主页 >> 数据库 >> 远程 MySQL)。

3 在远程 MySQL 服务器上,创建一个 MySQL 可以访问的 SSL 密钥存储目录。 例如,使用 mkdir /mysql_keys 命令创建一个 mysql_keys 目录。

注意: 如果您已经在远程 MySQL 服务器上创建了 /mysql_keys 目录,则可以跳过此步骤。

4 将客户端 SSL 证书复制到远程 MySQL 服务器的 /mysql 目录。

5 在远程 MySQL 服务器上,使用首选文本编辑器打开 /etc/my.cnf 文件。

6 在 my.cnf 文件的 [client] 部分插入以下行:

[client] ssl-mode=REQUIRED ssl-cert=/mysql_keys/client-cert.pem ssl-key=/mysql_keys/client-key.pem

注意:如果 [client] 部分不存在,则必须添加该部分。

您更新的 /etc/my.cnf 文件应类似于以下示例:

[mysqld] max_connections=500 log-slow-queries max_allowed_packet=268435456 open_files_limit=10000 default-storage-engine=MyISAM innodb_file_per_table=1 performance-schema=0[client] ssl-mode=REQUIRED ssl-cert=/mysql_keys/client-cert.pem ssl-key=/mysql_keys/client-key.pem

注意:

  • 如果服务器支持加密连接,则 ssl-mode=REQUIRED 设置将创建加密连接。 如果服务器无法创建加密连接,则连接将失败。
  • MySQL 在 MySQL 5.7 中引入了 ssl-mode 设置。 如果您运行 MySQL 5.6 或更早版本,请将 ssl-mode=REQUIRED 替换为 ssl。

7 将更改保存到 /etc/my.cnf 文件并退出文本编辑器。

8 运行以下命令以更新 /mysql_keys 目录及其文件的权限:

chown -Rf mysql. /mysql_keys

9 重新启动 MySQL 服务器。

注意:如果远程 MySQL 服务器运行 cPanel & WHM,请使用 /scripts/restartsrv_mysql 脚本重新启动 MySQL。

测试远程 MySQL 连接

要测试远程 MySQL 连接,请执行以下步骤:

1 通过 SSH 登录远程 MySQL 服务器。

2 使用mysql命令远程连接MySQL服务器。 以下示例使用 IP 地址 192.168.0.1 作为目标 MySQL 服务器,示例使用 MySQL 用户:

mysql -u example -h 192.168.0.1 -p

mysql 命令会将您连接到远程 MySQL 服务器并请求 MySQL 用户密码。

3 连接到远程 MySQL 服务器后,输入 status 命令。 输出类似于以下示例:

mysql> status--------------mysql Ver 14.14 Distrib 5.5.42, for Linux (x86_64) using readline 5.1Connection id: 19Current database: Current user: example@localhostSSL: Cipher in use is DHE-RSA-AES256-SHACurrent pager: stdoutUsing outfile: ''Using delimiter: ;Server version: 5.5.42-cll MySQL Community Server (GPL)Protocol version: 10Connection: Localhost via UNIX socketServer characterset: latin1Db characterset: latin1Client characterset: utf8Conn. characterset: utf8UNIX socket: /var/lib/mysql/mysql.sockUptime: 4 min 36 secThreads: 1 Questions: 67 Slow queries: 0 Opens: 34 Flush tables: 1 Open tables: 27 Queries per second avg: 0.242--------------

(0)

相关推荐

发表评论

登录后才能评论