หลังจากสร้างใบรับรอง SSL ที่ลงชื่อด้วยตนเองฉันได้กำหนดค่าเซิร์ฟเวอร์ MySQL ระยะไกลให้ใช้ (และเปิดใช้งาน SSL)
ฉัน ssh ลงในเซิร์ฟเวอร์ระยะไกลของฉันและลองเชื่อมต่อกับ mysqld ของตัวเองโดยใช้ SSL (เซิร์ฟเวอร์ MySQL คือ 5.5.25) ..
mysql -u <user> -p --ssl=1 --ssl-cert=client.cert --ssl-key=client.key --ssl-ca=ca.cert
Enter password:
ERROR 2026 (HY000): SSL connection error: error:00000001:lib(0):func(0):reason(1)
ตกลงฉันจำการอ่านมีปัญหาบางอย่างกับการเชื่อมต่อกับเซิร์ฟเวอร์เดียวกันผ่าน SSL ดังนั้นฉันจึงดาวน์โหลดคีย์ลูกค้าลงในกล่องท้องถิ่นของฉันและทดสอบจากที่นั่น ...
mysql -h <server> -u <user> -p --ssl=1 --ssl-cert=client.cert --ssl-key=client.key --ssl-ca=ca.cert
Enter password:
ERROR 2026 (HY000): SSL connection error
มันไม่ชัดเจนว่าข้อผิดพลาด "ข้อผิดพลาดการเชื่อมต่อ SSL" นี้อ้างถึง แต่ถ้าฉันไม่ได้ใช้งาน-ssl-ca
แล้วฉันสามารถเชื่อมต่อโดยใช้ SSL ..
mysql -h <server> -u <user> -p --ssl=1 --ssl-cert=client.cert --ssl-key=client.key
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 37
Server version: 5.5.25 MySQL Community Server (GPL)
อย่างไรก็ตามฉันเชื่อว่านี่เป็นการเข้ารหัสการเชื่อมต่อเท่านั้นและไม่ได้ตรวจสอบความถูกต้องของใบรับรอง (หมายถึงฉันอาจเสี่ยงต่อการถูกโจมตีจากคนกลาง)
SSL certs นั้นถูกต้อง (แม้ว่าจะเซ็นชื่อด้วยตนเอง) และไม่มีข้อความรหัสผ่าน ดังนั้นคำถามของฉันคือฉันทำอะไรผิด ฉันจะเชื่อมต่อผ่าน SSL โดยใช้ใบรับรองที่ลงชื่อด้วยตนเองได้อย่างไร
รุ่นของเซิร์ฟเวอร์ MySQL คือ 5.5.25 และเซิร์ฟเวอร์และไคลเอนต์คือ CentOS 5
ขอบคุณสำหรับคำแนะนำใด ๆ
แก้ไข : โปรดทราบว่าในทุกกรณีคำสั่งจะถูกเรียกใช้จากไดเรกทอรีเดียวกันที่มีคีย์ ssl อยู่ (ดังนั้นจึงไม่มีพา ธ สัมบูรณ์)
แก้ไข (เพื่อตอบสนองต่อ mgorven):
ca.cert
เป็นผู้ออกใบรับรองซึ่งควรจะบอก mysql ว่าผู้ออกใบรับรองของฉันเชื่อถือได้
การกำหนดค่าจากmy.cnf
คือ
[mysqld]
ssl-ca=/etc/ssl/mysql/ca.cert
ssl-cert=/etc/ssl/mysql/server.cert
ssl-key=/etc/ssl/mysql/server.key
ฉันลองเพิ่มssl-cipher=DHE-RSA-AES256-SHA
แต่ลบออกไปเพราะมันไม่ได้ช่วยอะไร
ca.cert
อะไร มันเป็นใบรับรองที่ลงนามเองของเซิร์ฟเวอร์หรือไม่ คุณใช้ใบรับรองไคลเอ็นต์สำหรับการตรวจสอบสิทธิ์หรือไม่ โปรดระบุการกำหนดค่าที่เกี่ยวข้องกับ SSL บนเซิร์ฟเวอร์