使用自定义证书开启SSL链路加密

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

RDS MySQL在配置SSL链路加密时,不仅支持使用阿里云数据库提供的云端证书,还支持使用自定义证书。本文介绍通过自定义证书配置SSL链路加密功能的具体操作。

前提条件

  • 已安装OpenSSL工具。

  • RDS MySQL实例系列及版本如下:

    • 高可用系列:8.0、5.7、5.6

    • 集群系列:8.0、5.7

    • 基础版系列:8.0、5.7

说明
  • 使用Linux系统时,通常已经预装了OpenSSL工具,无需另外安装。

  • 使用Windows系统时,需要获取OpenSSL软件包并安装。

注意事项

  • 开启SSL链路加密后,会造成CPU使用率上升、读写时延增长。

  • 开启SSL链路加密后,已有连接需要断开重连,加密才会生效。

  • 配置、更改自定义证书内容或关闭SSL链路加密,将会重启您的数据库实例,耗时3分钟左右,请在业务低峰期操作。

如何配置

步骤一:获取自定义证书

警告

生成服务器证书私钥或自签名证书私钥时,请勿使用密码加密,否则将无法启用SSL链路加密。

以CentOS系统配置为例,执行如下步骤:

说明

如果您的操作系统为Windows,操作步骤中的openssl命令与CentOS系统中的openssl命令配置相同,cp命令请替换为手动复制,vim命令请替换为手动编辑文件。

  1. 创建自签名证书(server-ca.crt)和自签名证书私钥(server-ca.key)。

    openssl req -new -x509 -days 365 -nodes -out server-ca.crt -keyout server-ca.key -subj "/CN=root-ca"
  2. 生成服务器证书请求文件(server.csr)和服务器证书私钥(server.key)。

    MySQL的自定义证书目前仅支持对一个连接地址进行保护。您可以根据需要选择配置生成服务器证书请求文件,请配置如下命令:

    openssl req -new -nodes -text -out server.csr -keyout server.key -subj "/CN=rm-bpxxxxx.mysql.rds.aliyuncs.com"
    说明

    rm-bpxxxxx.mysql.rds.aliyuncs.com仅用于举例,请修改为需要保护的链接地址,查看连接地址请参见查看和管理实例连接地址和端口

    生成证书请求文件(server.csr)的过程中,会提示配置以下参数,请根据实际情况配置。

    参数

    说明

    示例

    Country Name

    ISO国家代码(两位字符)

    CN

    State or Province Name

    所在省份

    ZheJiang

    Locality Name

    所在城市

    HangZhou

    Organization Name

    公司名称

    Alibaba

    Organizational Unit Name

    部门名称

    Aliyun

    Common Name

    申请SSL证书的域名,在openssl.cnf文件中已配置,不需要输入

    -

    Email Address

    不需要输入

    -

    A challenge password

    不需要输入

    -

    An optional company name

    不需要输入

    -

  3. 生成服务器证书(server.crt)。

    • 如果您需要保护连接地址,请配置如下命令。

      openssl x509 -req -in server.csr -text -days 365 -CA server-ca.crt -CAkey server-ca.key -CAcreateserial  -out server.crt

完成以上步骤的配置后,执行ls命令,查看已生成的文件:

# ls
server-ca.crt  server-ca.key  ca.srl  server.crt  server.csr  server.key

关键文件解释如下:

  • server.crt:服务器证书文件。

  • server.key:服务器私钥文件。

  • server-ca.crt:自签名证书。

  • server-ca.key:自签名证书私钥。

步骤二:使用自定义证书开启SSL链路加密

说明

配置自定义证书后,实例的运行状态将会变更为修改SSL中,该状态将持续三分钟,请等待实例状态变更为运行中后再进行后续操作。

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

  2. 进入数据安全性>SSL页面。

  3. 切换证书来源为使用自定义证书,单击未开通前的开关,填写服务器证书服务器证书私钥后,单击确定,完成配置。

    图片1

    参数

    取值

    服务器证书

    此参数填写步骤一:获取自定义证书步骤中获取的server.crt文件内容。请填写-----BEGIN CERTIFICATE----------END CERTIFICATE-----间的内容,包括BEGIN和END部分。

    服务器证书私钥

    此参数填写步骤一:获取自定义证书步骤中获取的server.key文件内容。请填写-----BEGIN PRIVATE KEY----------END PRIVATE KEY-----间的内容,包括BEGIN和END部分。

配置成功后,会显示如下图所示的信息:

image

步骤三:客户端连接数据库

RDS MySQL数据库支持通过SSL远程连接,更多信息,请参见SSL连接RDS MySQL数据库

步骤四:(可选)更新证书

说明

除MySQL 8.0外,其他版本更新证书会重启实例,请谨慎操作。

如果您需要更新证书,可以在SSL页面单击更新SSL按钮,填入新的服务器证书和私钥。

image

步骤五:(可选)关闭SSL链路加密

说明

关闭SSL加密会重启实例,请谨慎操作。

如果您需要关闭SSL链路加密,可以在SSL页面单击已开通前的按钮。

image

常见问题

Q:自定义证书过期了怎么办?

A:RDS MySQL自定义证书的期限为用户所自定义,系统会根据证书有效期时间,在到期前发送过期提醒的通知,请收到通知后及时进行证书的有效期更新,避免业务受到影响。