Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การแก้ไขปัญหา >> Linux

แก้ไข: Server certificate does NOT include an ID which matches the server name

เมื่อตั้งค่า SSL บนเซิร์ฟเวอร์ที่รัน Apache (หรือเทคโนโลยีโฮสติ้งเว็บคล้ายๆ) อาจเจอข้อผิดพลาดว่า server certificate does NOT include an ID which matches the server name นี่เป็นแค่คำเตือน (warning) และ理論上สามารถทำงานต่อได้ แต่แนะนำให้ตรวจสอบแก้ไขให้ถูกต้องเพื่อไม่ให้เกิดปัญหาต่อไป

เมื่อจับคู่ชื่อเซิร์ฟเวอร์กับใบรับรอง (certificate) ให้ถูกต้องแล้ว ไม่ต้องทำซ้ำขั้นตอนเหล่านี้เมื่ออัปเดตระบบครั้งหน้า อาจต้องสร้างใหม่ (regenerate) บางอย่างหากแก้ไขไฟล์ไม่ได้ แต่หลังจากนั้นก็ไม่ต้องตั้งค่าไฟล์เพิ่มเติม

วิธีที่ 1: แก้ไขไฟล์ httpd.conf

เริ่มด้วยการตรวจสอบไฟล์ แก้ไข: Server certificate does NOT include an ID which matches the server name ซึ่งอาจอยู่ตำแหน่งต่างออกไปบน Fedora, Red Hat หรือ CentOS ส่วน Debian และ Ubuntu ควรอยู่ที่ที่อยู่แรกนี้ ค้นหาข้อความเตือน server certificate does NOT include an ID which matches the server name

แก้ไข: Server certificate does NOT include an ID which matches the server name

อาจพบว่ามีการโยนหมายเลข 443 (หรือพอร์ตอื่น) หลังแต่ละส่วนของ IP Address แต่ไม่มีปัญหา SSL อื่นๆ ในกรณีนี้ อาจยังไม่ได้บอก Apache ให้ฟัง (listen) บนพอร์ตเหล่านั้น ให้รันคำสั่ง
แก้ไข: Server certificate does NOT include an ID which matches the server name และหาบรรทัดที่เขียนว่า Listen 80 ใต้บรรทัดนั้นเพิ่ม Listen 443 (หรือหมายเลขพอร์ตอื่นที่ต้องการ) หลังจากบันทึกและปิดไฟล์ ใช้คำสั่ง
แก้ไข: Server certificate does NOT include an ID which matches the server name เพื่อรีสตาร์ทโปรเซส httpd

ผู้ใช้ Ubuntu หรือ Debian อาจไม่มีไฟล์นี้ หรือไฟล์ว่างเปล่า ไม่เหมือน Fedora หรือ RHEL ในกรณีนี้ ใช้คำสั่ง
แก้ไข: Server certificate does NOT include an ID which matches the server name เพื่อแก้ไขไฟล์ข้อความที่ต้องการเพิ่มพอร์ตให้ฟัง

ในหลายกรณี วิธีนี้ควรแก้ปัญหาได้ หากยังไม่ได้ ให้ตรวจสอบปัญหาเครือข่ายที่เกี่ยวข้องก่อน แล้วค่อยตรวจสอบเรื่องใบรับรอง

วิธีที่ 2: สร้างใบรับรองใหม่ (Regenerating Certificates)

คำเตือนเหล่านี้อาจเกิดขึ้นหากใช้ใบรับรองที่หมดอายุและเซลฟ์ไซน์ (self-signed) เอง หากต้องสร้างใหม่ ให้ลองรัน
แก้ไข: Server certificate does NOT include an ID which matches the server name และหาสองบรรทัดที่ระบุ File และ KeyFile จะบอกตำแหน่งของไฟล์คีย์ใบรับรองเมื่อสร้าง SSL certificate

หากทำงานกับบริษัทรับรองมืออาชีพที่ให้ใบรับรองเว็บอย่างเป็นทางการ ให้ปฏิบัติตามคำแนะนำขององค์กรออกใบอนุญาตนั้นๆ มิฉะนั้น ให้รัน
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout KeyFile -out File
โดยแทนที่ KeyFile และ File ด้วยข้อความที่ได้จากคำสั่ง cat ก่อนหน้า ควรพบตำแหน่งไฟล์สองไฟล์ ซึ่งทำหน้าที่เป็น input และ output สำหรับใบรับรอง

สมมติว่าใบรับรองเก่าหมดอายุ การทำเช่นนี้เพียงพอที่จะแก้ข้อผิดพลาด แต่อาจต้องรีสตาร์ทบริการก่อนที่จะหยุดโยนคำเตือน

คุณยังสามารถดูรายละเอียดใบรับรองที่ติดตั้งอยู่เพื่อช่วยตรวจสอบได้ เพื่อดูว่าชื่ออะไรอยู่บนใบรับรองปัจจุบัน (เพื่อให้ตรงกัน) ให้รัน
openssl s_client -showcerts -connect ${HOSTNAME}:443
แต่ต้องใส่ hostname จริงของคุณแทนคำว่า ${HOSTNAME} (รวมวงเล็บด้วย) แทนที่ตัวเลข 443 หากมีปัญหากับพอร์ตอื่น

ในกรณีที่มีหลายใบรับรองบนอุปกรณ์เดียวกันและเสิร์ฟจาก IP เดียวกัน ให้รัน
openssl s_client -showcerts -connect ${IP}:443 -servername ${HOSTNAME}
แทนที่ ${IP} ด้วย IP จริง และใส่ hostname อีกครั้ง ตัวเลข 443 ก็อาจต้องเปลี่ยนตามกรณีใช้งาน

สำคัญ: ต้องแน่ใจว่า hostname ที่ถูกต้องได้ถูกระบุเป็น alias หรือ common name ตอนที่สร้าง CSR (Certificate Signing Request) ไปตั้งแต่แรก