ฉันพยายามตั้งค่า Gmail send-as เพื่อส่งอีเมลผ่านเซิร์ฟเวอร์ SMTP ผ่าน TLS และฉันได้รับ "การเจรจา tls ล้มเหลว ใบรับรองไม่ตรงกับโฮสต์" นับตั้งแต่ฉันต่ออายุใบรับรองการเข้ารหัสที่อนุญาต
ความเป็นมา: ฉันมีเซิร์ฟเวอร์ที่มี IP เฉพาะที่ใช้ชื่อโดเมนสองสามชื่อร่วมกัน ฉันใช้ virutalmin/webmin ฉันมีปัญหาในการต่ออายุ ดังนั้นฉันจึงเรียกใช้ certbot เพื่อยืนยันด้วยตนเองผ่านระเบียน TXT ฉันสร้างใบรับรองด้วย CN=domain.com และ SANS=domain.com,www.domain.com,mail.domain.com mail.domain.com เป็นการตั้งค่าระเบียน A ที่มี cloudflare ชี้ไปที่ IP โดยตรง (โดยไม่ต้องใช้พร็อกซี) หมายเหตุ ทุกอย่างทำงานได้ดีก่อนหน้านี้ เซิร์ฟเวอร์ใช้หลายโดเมนร่วมกัน โดเมนหลักไม่มีปัญหากับอีเมล ก่อนหน้านี้มันหยุดทำงานสำหรับ dovecot และ postfix เนื่องจากใบรับรองของฉันไม่ได้ต่ออายุกับ mail.domain.com ในรายการ SANS มันใช้งานได้หลังจากแก้ไขแล้ว ฉันมีโดเมนที่สองที่หยุดทำงานกับการส่ง ไม่ได้ใช้ POP3/IMAP เนื่องจากอีเมลจะถูกส่งต่อเท่านั้น
มาเข้ารหัสสร้างไฟล์กันเถอะ ฉันตั้งค่าแผนที่ postfix SNI ให้ชี้ไปที่ไฟล์ใบรับรอง
เมื่อฉันรัน openssl x509 -text ในไฟล์ ฉันเห็น CN และ SANS
เมื่อฉันเรียกใช้ openssl s_client -connect mail.domain.com:25 -starttls smtp มันจะแสดงเฉพาะ CN ไม่ใช่ SANS
การส่งอีเมลด้วยโดเมนหลักทำงานได้ดี การส่งอีเมลด้วยโดเมนที่สองทำให้เกิดข้อผิดพลาด opensl ให้ผลลัพธ์เดียวกัน การอ่านไฟล์จะแสดง CN=domain.com และ SANS=domain.com,www.domain.com,mail.domain.com การเชื่อมต่อกับเซิร์ฟเวอร์ smtp จะแสดงเฉพาะ CN สำหรับโดเมนที่เกี่ยวข้อง
ฉันไม่แน่ใจว่า gmail กำลังเปรียบเทียบกับอะไรเมื่อบอกว่า "ใบรับรองไม่ตรงกับโฮสต์" ฉันคิดว่ามันเป็นแค่ CN และ SANS กับชื่อเซิร์ฟเวอร์ แต่อาจจะเป็นอย่างอื่น