ฉันมีเครื่อง Linux ที่เชื่อมต่อกับเซิร์ฟเวอร์ MySQL ระยะไกลโดยใช้ Stunnel 5.56ฉันดาวน์โหลดใบรับรองของเซิร์ฟเวอร์ระยะไกลและใส่เข้าไป /etc/ssl/cert/mysql-server.pem
. นี่คือการกำหนดค่า stunnel ของเครื่อง Linux ของฉัน:
# /etc/stunnel/mysql.conf
แก้จุดบกพร่อง = 6
[เซิร์ฟเวอร์ mysql]
ลูกค้า = ใช่
ยอมรับ = 127.0.0.1:3326
เชื่อมต่อ = mysql-remote.example.com:3307
ตรวจสอบเพียร์ = ใช่
CAfile = /etc/ssl/cert/mysql-server.pem
เมื่อฉันเริ่มบริการ อุโมงค์จะถูกสร้างขึ้น และนี่คือสิ่งที่ฉันเห็นในบันทึก:
stunnel: LOG5[ui]: stunnel 5.56 บนแพลตฟอร์ม x86_64-pc-linux-gnu
Stunnel: LOG5[ui]: คอมไพล์/รันด้วย OpenSSL 1.1.1k 25 มี.ค. 2564
stunnel: LOG5[ui]: Threading:PTHREAD Sockets:POLL,IPv6,SYSTEMD TLS:ENGINE,FIPS,OCSP,PSK,SNI Auth:LIBWRAP
stunnel: LOG5[ui]: อ่านการกำหนดค่าจากไฟล์ /etc/stunnel/mysql.conf
stunnel: LOG5[ui]: ตรวจไม่พบเครื่องหมายคำสั่ง UTF-8 ไบต์
Stunnel: LOG5[ui]: ปิดใช้งานโหมด FIPS
stunnel: LOG6[ui]: กำลังเริ่มต้นบริการ [เซิร์ฟเวอร์ mysql]
stunnel: LOG5[ui]: การกำหนดค่าสำเร็จ
stunnel: LOG6[ui]: บริการ [เซิร์ฟเวอร์ mysql] (FD=9) เชื่อมโยงกับ 127.0.0.1:3326
stunnel4[3372706]: การเริ่มต้นอุโมงค์ TLS: /etc/stunnel/mysql.conf: เริ่มต้น (ไม่ได้ระบุ pid=pidfile!)
stunnel: LOG6[cron]: เรียกใช้งาน cron
stunnel: LOG6[cron]: งาน Cron เสร็จใน 0 วินาที
จากการทดลอง ฉันดาวน์โหลดใบรับรองที่ใช้โดย https://www.google.co.th และบันทึกไว้ใน
/root/google.pem
. ฉันเปลี่ยนการกำหนดค่า Stunnel ข้างต้นโดยเปลี่ยน ไฟล์ CA
เพื่อชี้ไปที่ใบรับรองของ Google:
แก้จุดบกพร่อง = 6
[เซิร์ฟเวอร์ mysql]
ลูกค้า = ใช่
ยอมรับ = 127.0.0.1:3326
เชื่อมต่อ = mysql-remote.example.com:3307
ตรวจสอบเพียร์ = ใช่
CAfile = /root/google.pem
เมื่อฉันรีสตาร์ท stunnel ทุกอย่างใช้งานได้! นั่นคือ stunnel ทำ ไม่ ดูเหมือนจะสนใจใบรับรองที่อยู่ใน CAfile นี่ไม่ใช่วิธีที่การยืนยันใบรับรองเพียร์ควรทำงาน ผมทำอะไรผิดหรือเปล่า?
(หมายเหตุ: ฉันยังพยายามเพิ่ม ตรวจสอบ = N
กับ เอ็น
เป็น 2, 3 และ 4 ที่มีผลลัพธ์เหมือนกัน)
รายละเอียดทางเทคนิค: การรัน Stunnel จากแพ็คเกจ Debian bullseye สตันเนล4
รุ่น 3:5.56+dfsg-10
.