场景:验证 MySQL 服务器

我们建议您使用 TLS 证书对 MySQL 服务器进行身份验证。您可以使用来自可信证书颁发机构 (CA) 的证书或自签名证书。

管理服务器支持 MySQL 的单向和双向 SSL 身份验证。

启用单向 SSL 身份验证

请按照以下步骤为 MySQL 配置单向 SSL 身份验证:

  1. 为 MySQL 服务器生成自签名 TLS 证书

    在 PowerShell 中,将目录更改为要存储证书的文件夹。执行以下命令:

    $CertCA = New-SelfSignedCertificate `

    -Subject "CN=CertCA" `

    -CertStoreLocation "Cert:\CurrentUser\My" `

    -HashAlgorithm "SHA256" `

    -NotAfter (Get-Date).AddDays(365)

    $CertCABase64 = [System.Convert]::ToBase64String($CertCA.RawData, [System.Base64FormattingOptions]::InsertLineBreaks)

    $CertLeaf = New-SelfSignedCertificate `

    -Subject "CN=CertLeaf" `

    –Signer $CertCA `

    -CertStoreLocation "Cert:\CurrentUser\My" `

    -HashAlgorithm "SHA256" `

    -KeyExportPolicy Exportable `

    -NotAfter (Get-Date).AddDays(365)

    $CertLeafBase64 = [System.Convert]::ToBase64String($CertLeaf.RawData, [System.Base64FormattingOptions]::InsertLineBreaks)

    $CertLeafRSACng = [System.Security.Cryptography.X509Certificates.RSACertificateExtensions]::GetRSAPrivateKey($CertLeaf)

    $CertLeafKeyBytes = $CertLeafRSACng.Key.Export([System.Security.Cryptography.CngKeyBlobFormat]::Pkcs8PrivateBlob)

    $CertLeafKeyBase64 = [System.Convert]::ToBase64String($CertLeafKeyBytes, [System.Base64FormattingOptions]::InsertLineBreaks)

    $CertCAPemCert = @"

    -----BEGIN CERTIFICATE-----

    $CertCABase64

    -----END CERTIFICATE-----

    "@

    $CertLeafPemKey = @”

    -----BEGIN PRIVATE KEY-----

    $CertLeafKeyBase64

    -----END PRIVATE KEY-----

    "@

    $CertLeafPemCert = @"

    -----BEGIN CERTIFICATE-----

    $CertLeafBase64

    -----END CERTIFICATE-----

    "@

    # Output to file

    $CertCAPemCert | Out-File -FilePath ca-cert.pem -Encoding Ascii

    $CertLeafPemKey | Out-File -FilePath server-key.pem -Encoding Ascii

    $CertLeafPemCert | Out-File -FilePath server-cert.pem -Encoding Ascii

    这些命令可为当前用户创建证书并将证书导出为 PEM 格式。您只需要导出的 PEM 文件来验证服务器。要从 Windows 中删除创建的证书,请在 PowerShell 中执行以下命令:

    certmgr.msc

    个人 → 证书文件夹中定位创建的证书并将其删除。

  2. 创建服务器标志文件

    使用管理员权限运行 Windows 命令提示符,然后将当前目录更改为包含 klscflag 实用程序的目录。klscflag 实用程序位于安装管理服务器的文件夹中。默认安装路径为 <Disk>:\Program Files (x86)\Kaspersky Lab\Kaspersky Security Center。

    使用 klscflag 实用程序来创建 KLSRV_MYSQL_OPT_SSL_CA 服务器标志并指定证书的路径作为其值。

    klscflag -fset -pv klserver -n KLSRV_MYSQL_OPT_SSL_CA -v <path to ca-cert.pem> -t s

  3. 配置数据库

    在 my.cnf 文件中指定证书。在文本编辑器中打开 my.cnf 文件并将以下行添加到 [mysqld] 部分中:

    [mysqld]

    ssl-ca="...\mysqlcerts\ca-cert.pem"

    ssl-cert="...\mysqlcerts\server-cert.pem"

    ssl-key="...\mysqlcerts\server-key.pem"

启用双向 SSL 身份验证

请按照以下步骤为 MySQL 配置双向 SSL 身份验证:

  1. 创建服务器标志文件

    使用管理员权限运行 Windows 命令提示符,然后将当前目录更改为包含 klscflag 实用程序的目录。klscflag 实用程序位于安装管理服务器的文件夹中。默认安装路径为 <Disk>:\Program Files (x86)\Kaspersky Lab\Kaspersky Security Center。

    使用 klscflag 实用程序来创建服务器标记并指定证书文件的路径作为其值:

    klscflag -fset -pv klserver -n KLSRV_MYSQL_OPT_SSL_CA -v <path to ca-cert.pem> -t s

    klscflag -fset -pv klserver -n KLSRV_MYSQL_OPT_SSL_CERT -v <path to server-cert.pem> -t s

    klscflag -fset -pv klserver -n KLSRV_MYSQL_OPT_SSL_KEY -v <path to server-key.pem> -t s

  2. 指定密码(可选)

    如果 server-key.pem 需要密码,请创建 KLSRV_MARIADB_OPT_TLS_PASPHRASE 标记并指定密码作为其值:

    klscflag -fset -pv klserver -n KLSRV_MARIADB_OPT_TLS_PASPHRASE -v <passphrase> -t s

  3. 配置数据库

    在 my.cnf 文件中指定证书。在文本编辑器中打开 my.cnf 文件并将以下行添加到 [mysqld] 部分中:

    [mysqld]

    ssl-ca="...\ca-cert.pem"

    ssl-cert="...\server-cert.pem"

    ssl-key="...\server-key.pem"

页顶