シナリオ:MySQL サーバーの認証

MySQL サーバーの認証には TLS 証明書を使用することを推奨します。信頼できる証明機関(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 <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 <ca-cert.pem へのパス> -t s

    klscflag -fset -pv klserver -n KLSRV_MYSQL_OPT_SSL_CERT -v <server-cert.pem へのパス> -t s

    klscflag -fset -pv klserver -n KLSRV_MYSQL_OPT_SSL_KEY -v <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 <パスフレーズ> -t s

  3. 定義データベースの設定

    ファイル my.cnf で証明書を指定します。テキストエディターでファイル my.cnf を開き、次の行を[mysqld]セクションに追加します:

    [mysqld]

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

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

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

ページのトップに戻る