Documentation Home
MySQL 8.0 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 36.1Mb
PDF (A4) - 36.2Mb


MySQL 8.0 リファレンスマニュアル  /  ...  /  MySQL を使用した SSL および RSA 証明書とキーの作成

このページは機械翻訳したものです。

6.3.3.1 MySQL を使用した SSL および RSA 証明書とキーの作成

MySQL では、SSL を使用した暗号化された接続をサポートするために必要な SSL 証明書およびキーファイルと RSA キーペアファイル、および暗号化されていない接続を介した RSA を使用したセキュアなパスワード交換 (これらのファイルがない場合) を作成するために、次の方法が提供されます:

  • MySQL ディストリビューションの場合、サーバーは起動時にこれらのファイルを自動生成できます。

  • ユーザーは mysql_ssl_rsa_setup ユーティリティを手動で起動できます。

  • RPM パッケージや DEB パッケージなどの一部の配布タイプでは、データディレクトリの初期化中に mysql_ssl_rsa_setup の起動が発生します。 この場合、openssl コマンドが使用可能であれば、OpenSSL を使用して MySQL ディストリビューションをコンパイルする必要はありません。

重要

サーバーの自動生成および mysql_ssl_rsa_setup は、必要なファイルを簡単に生成できるようにすることで、SSL を使用したバリアの低減に役立ちます。 ただし、これらの方法で生成された証明書は自己署名されているため、あまりセキュアでない可能性があります。 このようなファイルの使用経験がある場合は、登録された認証局から証明書/キーデータを取得することを検討してください。

SSL および RSA ファイルの自動生成

OpenSSL を使用してコンパイルされた MySQL ディストリビューションの場合、MySQL サーバーには、起動時に欠落している SSL および RSA ファイルを自動的に生成する機能があります。 auto_generate_certssha256_password_auto_generate_rsa_keys および caching_sha2_password_auto_generate_rsa_keys システム変数は、これらのファイルの自動生成を制御します。 これらの変数はデフォルトで有効になっています。 これらは起動時に有効化して検査できますが、実行時には設定できません。

起動時に、auto_generate_certs システム変数が有効で、--ssl 以外の SSL オプションが指定されておらず、サーバー側の SSL ファイルがデータディレクトリから欠落している場合、サーバーはサーバー側およびクライアント側の SSL 証明書とキーファイルをデータディレクトリに自動的に生成します。 これらのファイルにより、SSL を使用した暗号化されたクライアント接続が可能になります。セクション6.3.1「暗号化接続を使用するための MySQL の構成」 を参照してください。

  1. サーバーは、次の名前の SSL ファイルのデータディレクトリをチェックします:

    ca.pem
    server-cert.pem
    server-key.pem
  2. これらのファイルのいずれかが存在する場合、サーバーは SSL ファイルを作成しません。 それ以外の場合は、それらに加えて追加のファイルが作成されます:

    ca.pem               Self-signed CA certificate
    ca-key.pem           CA private key
    server-cert.pem      Server certificate
    server-key.pem       Server private key
    client-cert.pem      Client certificate
    client-key.pem       Client private key
  3. サーバーが SSL ファイルを自動生成する場合は、ca.pemserver-cert.pem および server-key.pem ファイルの名前を使用して、対応するシステム変数 (ssl_ca, ssl_cert, ssl_key) を設定します。

これらの条件がすべて満たされている場合、サーバーは起動時に RSA 秘密キー/公開キーのペアファイルをデータディレクトリに自動的に生成: sha256_password_auto_generate_rsa_keys または caching_sha2_password_auto_generate_rsa_keys システム変数が有効になっており、RSA オプションが指定されていません。RSA ファイルがデータディレクトリにありません。 これらのキーペアファイルを使用すると、sha256_password または caching_sha2_password プラグインによって認証されたアカウントに対して、暗号化されていない RSA 接続を使用したセキュアなパスワード交換が可能になります。セクション6.4.1.3「SHA-256 プラガブル認証」 および セクション6.4.1.2「SHA-2 プラガブル認証のキャッシュ」 を参照してください。

  1. サーバーは、RSA ファイルのデータディレクトリを次の名前でチェックします:

    private_key.pem      Private member of private/public key pair
    public_key.pem       Public member of private/public key pair
  2. これらのファイルのいずれかが存在する場合、サーバーは RSA ファイルを作成しません。 それ以外の場合は、作成されます。

  3. サーバーは RSA ファイルを自動生成する場合、その名前を使用して、対応するシステム変数 (sha256_password_private_key_path および sha256_password_public_key_pathcaching_sha2_password_private_key_path および caching_sha2_password_public_key_path) を設定します。

mysql_ssl_rsa_setup を使用した SSL および RSA ファイルの手動生成

MySQL ディストリビューションには、SSL および RSA ファイルを生成するために手動で起動できる mysql_ssl_rsa_setup ユーティリティが含まれています。 このユーティリティはすべての MySQL ディストリビューションに含まれていますが、openssl コマンドを使用できる必要があります。 使用手順については、セクション4.4.3「mysql_ssl_rsa_setup — SSL/RSA ファイルの作成」 を参照してください。

SSL および RSA ファイルの特性

サーバーまたは mysql_ssl_rsa_setup の起動によって自動的に作成される SSL および RSA ファイルには、次の特性があります:

  • SSL および RSA キーのサイズは 2048 ビットです。

  • SSL CA 証明書は自己署名されています。

  • SSL サーバーおよびクライアント証明書は、sha256WithRSAEncryption 署名アルゴリズムを使用して CA 証明書およびキーで署名されます。

  • SSL 証明書は、適切な証明書タイプ (CA、サーバー、クライアント) で次の共通名 (CN) 値を使用します:

    ca.pem:         MySQL_Server_suffix_Auto_Generated_CA_Certificate
    server-cert.pm: MySQL_Server_suffix_Auto_Generated_Server_Certificate
    client-cert.pm: MySQL_Server_suffix_Auto_Generated_Client_Certificate

    suffix の値は、MySQL のバージョン番号に基づきます。 mysql_ssl_rsa_setup によって生成されたファイルの場合、--suffix オプションを使用して接尾辞を明示的に指定できます。

    サーバーによって生成されたファイルの場合、CN 値が 64 文字を超えると、名前の_suffix 部分は省略されます。

  • SSL ファイルには、国 (C)、都道府県 (ST)、組織 (O)、組織単位名 (OU) および電子メールアドレスの空白値があります。

  • サーバーまたは mysql_ssl_rsa_setup によって作成された SSL ファイルは、生成後 10 年間有効です。

  • RSA ファイルは期限切れになりません。

  • SSL ファイルには、証明書とキーのペアごとに異なるシリアル番号があります (CA の場合は 1、サーバーの場合は 2、クライアントの場合は 3)。

  • サーバーによって自動的に作成されたファイルは、サーバーを実行するアカウントによって所有されます。 mysql_ssl_rsa_setup を使用して作成されたファイルは、そのプログラムを起動したユーザーが所有します。 これは、プログラムが root によって起動され、ファイルを所有するユーザーを指定する --uid オプションが指定されている場合に、chown() システムコールをサポートするシステムで変更できます。

  • Unix および Unix に似たシステムでは、ファイルアクセスモードは、証明書ファイルの場合は 644 (ワールド読取り可能) で、キーファイルの場合は 600 (つまり、サーバーを実行するアカウントによってのみアクセス可能) です。

SSL 証明書の内容を確認するには (たとえば、有効な日付の範囲を確認するには)、openssl を直接起動します:

openssl x509 -text -in ca.pem
openssl x509 -text -in server-cert.pem
openssl x509 -text -in client-cert.pem

次の SQL ステートメントを使用して SSL 証明書の有効期限情報を確認することもできます:

mysql> SHOW STATUS LIKE 'Ssl_server_not%';
+-----------------------+--------------------------+
| Variable_name         | Value                    |
+-----------------------+--------------------------+
| Ssl_server_not_after  | Apr 28 14:16:39 2027 GMT |
| Ssl_server_not_before | May  1 14:16:39 2017 GMT |
+-----------------------+--------------------------+