เบราว์เซอร์ขอใบรับรองเนื่องจากเซิร์ฟเวอร์ส่งข้อความคำขอใบรับรองในระหว่างการจับมือ TLS
โดยปกติแล้ว ระบบจะส่งรายชื่อเฉพาะของ CA ที่มีใบรับรองที่จะยอมรับสำหรับการตรวจสอบสิทธิ์ รายการนี้โดยทั่วไปหมายถึง "ส่งใบรับรองการตรวจสอบไคลเอ็นต์ซึ่งออกโดยหนึ่งใน CA เหล่านี้ให้ฉัน". หากไม่ส่งรายการ ไคลเอ็นต์มีอิสระที่จะส่งใบรับรองการตรวจสอบไคลเอ็นต์ใดๆ ที่มี ซึ่งเซิร์ฟเวอร์อาจไม่เชื่อถือ นั่นจะเพิ่มภาระงาน/ความยุ่งยากของผู้ปฏิบัติงานที่ต้องทำงาน (เดา?) ว่าจะเลือกใบรับรองใด
ดังนั้นคุณจึงเห็นใบรับรองสามใบเนื่องจากคุณติดตั้งใบรับรองการรับรองความถูกต้องไคลเอ็นต์เพียงสามใบในเบราว์เซอร์ของคุณและรายการว่างเปล่า หรือคุณมีใบรับรองการตรวจสอบสิทธิ์ไคลเอ็นต์มากกว่าสามรายการในเบราว์เซอร์ของคุณ และรายการที่ส่งโดยเซิร์ฟเวอร์จะจำกัดการเลือกใบรับรองเหล่านั้น
รายละเอียดอยู่ใน RFC 5246 ส่วนที่ 7.4.4.
ตัวเลือกในการขอใบรับรองจากไคลเอ็นต์ได้รับการกำหนดค่าบนเซิร์ฟเวอร์ ดังนั้นคุณจะเห็นป๊อปอัปนี้เนื่องจากเซิร์ฟเวอร์ได้รับการกำหนดค่าให้ร้องขอใบรับรองไคลเอ็นต์
โปรดจำไว้ว่าสิ่งนี้จะเกิดขึ้นก่อนที่ทราฟฟิก HTTP จะไหล ดังนั้นการตั้งค่าต่างๆ เช่น การรับรองความถูกต้องแบบไม่ระบุชื่อ บน IIS จะไม่ส่งผลกระทบต่อสิ่งนี้เนื่องจากเกี่ยวข้องกับวิธีการรับรองความถูกต้องของผู้ใช้ผ่าน HTTP (ไม่มี, Kerberos, ชื่อผู้ใช้/รหัสผ่าน ฯลฯ) หลังจากตั้งค่าเซสชัน TLS แล้ว
เว็บเซิร์ฟเวอร์ส่วนใหญ่สามารถกำหนดค่าได้ด้วยการตั้งค่าที่แตกต่างกันสำหรับรูปแบบต่างๆ (http กับ https) พอร์ตต่างๆ (443, vs 8443) ชื่อ DNS ที่แตกต่างกัน (www.example.org vs app.example.org) หรือแม้แต่ไดเรกทอรีเสมือนต่างๆ (/ vs /myapp) ในระดับนี้จะพบการตั้งค่าเพื่อขอการรับรองความถูกต้องของไคลเอ็นต์
ในการรับรองความถูกต้องของไคลเอนต์ IIS ได้รับการกำหนดค่าภายใต้ การตั้งค่า SSL หน้าหนังสือ. ต้องการ SSL กำหนดว่าจะใช้ HTTPS หรือไม่ (ข้อมูลประจำตัวของเซิร์ฟเวอร์และการเข้ารหัส) และสามตัวเลือกด้านล่าง ใบรับรองลูกค้า กำหนดว่าเบราว์เซอร์จะต้องส่งใบรับรองการตรวจสอบสิทธิ์ไคลเอ็นต์หรือไม่ (คุณไม่สามารถมีใบรับรองหลังได้หากไม่มีใบรับรองเดิม เนื่องจากการตรวจสอบสิทธิ์ไคลเอ็นต์เป็นส่วนหนึ่งของ TLS (หรือ SSL)) มีความแตกต่าง การตั้งค่า SSL หน้าสำหรับแต่ละไซต์และสำหรับไดเรกทอรีเสมือนแต่ละรายการภายใต้ไซต์ หากคุณไม่ต้องการให้เซิร์ฟเวอร์ขอใบรับรองไคลเอ็นต์ ให้ตั้งค่านี้เป็น ไม่สนใจ ในพวกเขาทั้งหมด