ฉันต้องการให้เว็บเซิร์ฟเวอร์พูดกับเซิร์ฟเวอร์ฐานข้อมูล MySQL ผ่านการเชื่อมต่อ SSL เว็บเซิร์ฟเวอร์เรียกใช้ CentOS5 เซิร์ฟเวอร์ฐานข้อมูลรัน FreeBSD ใบรับรองดังกล่าวจัดทำโดย CA DigiCert ระดับกลาง
MySQL ควรใช้ ssl ตามmy.cnf
:
# The MySQL server
[mysqld]
port = 3306
socket = /tmp/mysql.sock
ssl
ssl-capath = /opt/mysql/pki/CA
ssl-cert = /opt/mysql/pki/server-cert.pem
ssl-key = /opt/mysql/pki/server-key.pem
เมื่อฉันเริ่ม MySQL daemon จะเริ่มโดยไม่มีข้อผิดพลาด สิ่งนี้ชี้ให้เห็นว่าไฟล์ใบรับรองสามารถอ่านได้ทั้งหมด
แต่เมื่อฉันพยายามเชื่อมต่อจากเว็บเซิร์ฟเวอร์ไปยังเซิร์ฟเวอร์ฐานข้อมูลฉันได้รับข้อผิดพลาด:
[root@webserver ~]# mysql -h mysql.example.org -u user -p
ERROR 2026 (HY000): SSL connection error
และถ้าฉันพยายามแก้ไขเพิ่มเติมด้วย openssl:
[root@webserver ~]# openssl s_client -connect mysql.example.org:3306 0>/dev/null
CONNECTED(00000003)
15706:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:588:
นี่เป็นวิธีที่ถูกต้องในการทดสอบการเชื่อมต่อ SSL กับเซิร์ฟเวอร์ฐานข้อมูล MySQL หรือไม่? SSL23_GET_SERVER_HELLO:unknown protocol
ข้อความแปลกตั้งแต่นี้โดยทั่วไปแล้วสิ่งที่คุณจะดูว่าคุณกำลังพูด SSL บนพอร์ตไว้สำหรับการจราจรไม่ใช่ SSL
คำสั่ง openssl เดียวกันนี้ดูเหมือนจะทำงานได้ดีกับเซิร์ฟเวอร์ LDAP และ HTTP:
$ openssl s_client -connect ldap.example.org:636 0>/dev/null
CONNECTED(00000003)
depth=2 /C=US/O=The Go Daddy Group, Inc./OU=Go Daddy Class 2 Certification Authority
...
$ openssl s_client -connect www.example.org:443 0>/dev/null
CONNECTED(00000003)
depth=0 /DC=org/DC=example/OU=Services/CN=www.example.org