apt-get
루트 계정을 사용하여 연결하고 SSL 상태를 확인할 때 Percona MySQL 5.7(5.7.21-20-log)을 사용하여 설치했습니다 .
# mysql --ssl
mysql> show variables like '%ssl%';
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| have_openssl | YES |
| have_ssl | YES |
| ssl_ca | ca.pem |
| ssl_capath | |
| ssl_cert | server-cert.pem |
| ssl_cipher | |
| ssl_crl | |
| ssl_crlpath | |
| ssl_key | server-key.pem |
+---------------+-----------------+
mysql> status
--------------
mysql Ver 14.14 Distrib 5.7.21-20, for debian-linux-gnu (x86_64) using 6.3
Connection id: 31
Current database:
Current user: root@localhost
SSL: Cipher in use is ECDHE-RSA-AES128-GCM-SHA256
따라서 기본적으로 SSL이 사용됩니다. 그러나 전체 명령을 사용하면
mysql -h 127.0.0.1 -P 3306 -u root -p --ssl-ca=/var/lib/mysql/ca.pem --ssl-cert=/var/lib/mysql/server-cert.pem --ssl-key=/var/lib/mysql/server-key.pem
오류를 반환합니다.
ERROR 2026 (HY000): SSL connection error: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
답변1
문제는 클라이언트 측에서 서버 인증서와 키를 사용하는 것입니다.
--ssl-cert=/var/lib/mysql/server-cert.pem --ssl-key=/var/lib/mysql/server-key.pem
문서화 된대로6.4.2 암호화된 연결을 위한 명령 옵션(강조는 내가 함):
--ssl-cert=file_name
PEM 형식의 SSL 공개 키 인증서 파일의 경로 이름입니다.클라이언트 측에서는 클라이언트 공개 키 인증서입니다.. 서버 측에서는 이것이 서버 공개 키 인증서입니다. 서버 측에서 이 옵션은 을 의미합니다
--ssl
.--ssl-key=file_name
PEM 형식의 SSL 개인 키 파일의 경로 이름입니다. 클라이언트 측에서는 다음과 같습니다.클라이언트 개인 키. 서버 측에서는 이것이 서버 개인 키입니다. 서버 측에서 이 옵션은 을 의미합니다
--ssl
.
--ssl
,만 사용하여 TLS 연결을 강제할 수 있습니다 .
mysql -h 127.0.0.1 -P 3306 -u root -p --ssl
여기서 유용할 수도 있습니다 --ssl-cipher=cipher_list
. 이를 통해 서버 구성에서 허용되는 경우에도 연결이 원하지 않는 암호를 사용하지 않는지 확인할 수 있습니다. 그러나 두 가지 모두에 대한 전원이 있는 경우 이는 주로 서버 측에서 구성되어야 합니다.