暗号化を有効にしようとしたときにエラーが発生しました:
[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プライベートキー '。
どうしたの?
わかりました、明らかに「BEGIN PRIVATE KEY」を「BEGIN RSA PRIVATE KEY」に変更するだけでは十分ではありません。
PKCS#8からPKCS#1に正しく変換する必要があります 参照
openssl rsa -in /etc/mysql/ssl/nginx.key -out ~/nginx.key.rsa
他の人を助けた私の偽のリードの統合として:
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サイトなどで機能することを確認します。
ファイルが完全に欠落しています。この場合も、エラーメッセージでは区別がありません。