web-dev-qa-db-ja.com

MySQL SSLエラー:秘密鍵を取得できません

暗号化を有効にしようとしたときにエラーが発生しました:

[ERROR] SSL error: Unable to get private key from '/etc/mysql/ssl/nginx.key'
[Warning] Failed to set up SSL because of the following SSL library error: Unable to get private key

/etc/mysql/conf.d/encrypt.cnf:

[mysqld]
ssl-ca=/etc/mysql/ssl/nginx.ca
ssl-cert=/etc/mysql/ssl/nginx.crt
ssl-key=/etc/mysql/ssl/nginx.key

キーはそのように生成されます:

openssl req -newkey rsa:4096 -nodes -keyout nginx.key -subj "/C=US/ST=California/L=Sacramento/O=MyOrg/OU=MyDev/CN=MyApp"

Opensslはそれを細かくチェックします。

権限、所有者、ファイル名の変更、別のディレクトリへの移動、SELinuxの無効化(すでに無効になっています)、AppArmorログの確認(ブロックはしていません)、「BEGIN/END PRIVATE KEY」を「BEGIN」に変更しようとしました/ END RSAプライベートキー '。

どうしたの?

7
Velkan

わかりました、明らかに「BEGIN PRIVATE KEY」を「BEGIN RSA PRIVATE KEY」に変更するだけでは十分ではありません。

PKCS#8からPKCS#1に正しく変換する必要があります 参照

openssl rsa -in /etc/mysql/ssl/nginx.key -out ~/nginx.key.rsa
10
Velkan

他の人を助けた私の偽のリードの統合として:

  • POSIXモードビットとファイル所有者:mysqlユーザーは、ユーザーまたはグループ権限を介してすべてのSSLファイルへの読み取りアクセス権を持っている必要があります。これはchown mysql *.pemまたはmysqlのグループにssl-privateを追加することを意味する場合があります。 ( https://serverfault.com/questions/417390/cannot-setup-mysql-ssl-unable-to-read-certificate

  • AppArmorはファイルアクセスを遮断できます。 /etc/mysql/**/etc/apparmor.d/usr.sbin/mysqldのようなものが必要です。 /var/log/kern.logを確認し、aa-complain /usr/sbin/mysqldを検討して拒否ではなくエラーを取得します。( https://forums.mysql.com/read.php?26,393495,393636#msg-393636 =)

  • 不正な形式のファイル内容。 SSLライブラリは正確に不平を言うのが非常に苦手です。フルキーセットがWebサイトなどで機能することを確認します。

  • ファイルが完全に欠落しています。この場合も、エラーメッセージでは区別がありません。

1
BaseZen