Score:0

การรับรองความถูกต้องร่วมกัน (ไคลเอนต์ WCF ที่เชื่อมต่อกับบริการ SOAP) ล้มเหลวด้วยใบรับรองไคลเอนต์หนึ่ง แต่ใช้งานได้กับอีกอันหนึ่ง (แต่ทั้งสองเชื่อถือได้ในฝั่งเซิร์ฟเวอร์)

ธง hr

การตั้งค่า: แอปพลิเคชันไคลเอนต์ .NET (4.6) เชื่อมต่อกับบริการ SOAP ระยะไกลผ่าน HTTPS บริการระยะไกลสามารถกำหนดค่าให้ต้องมีใบรับรองไคลเอ็นต์หรือไม่ก็ได้

สิ่งที่ฉันกำลังมองหาเป็นคำตอบคือคำอธิบายที่เป็นไปได้ว่าทำไมสถานการณ์ # 2 ล้มเหลว ... 3 สถานการณ์ต่อไปนี้ได้รับการทดสอบทั้งหมดโดยใช้ฐานรหัสเดียวกันทุกประการ เปลี่ยนเฉพาะใบรับรองที่เกี่ยวข้องและใบรับรองไคลเอ็นต์จำเป็นหรือไม่ บริการ.

สถานการณ์ #1 - ไม่ต้องใช้ใบรับรองไคลเอ็นต์

  • ลูกค้าเชื่อมต่อตกลง

สถานการณ์ #2 - ต้องการใบรับรองไคลเอ็นต์ ใช้ใบรับรอง A

  • ใบรับรอง A ได้รับการติดตั้งใน Windows ที่ฝั่งไคลเอนต์ (ร้านคอมพิวเตอร์ในพื้นที่)
  • ใบรับรองถูกต้อง 2048 บิต ไม่ใช่ไวด์การ์ด ใช้สำเร็จสำหรับการตรวจสอบสิทธิ์เซิร์ฟเวอร์ในบริการอื่นที่ไม่เกี่ยวข้อง ซึ่งออกโดย GoDaddy Secure Certificate Authority - G2
  • มีการแชร์ใบรับรองกับบุคคลระยะไกลที่ดูเหมือนจะรู้ว่ากำลังทำอะไรอยู่
  • เมื่อลูกค้าพยายามร้องขอ การจับมือกันล้มเหลว ในฝั่งไคลเอ็นต์ ข้อยกเว้นของ .NET คือ "คำขอถูกยกเลิก: ไม่สามารถสร้างแชนเนลที่ปลอดภัย SSL/TLS" ที่ฝั่งเซิร์ฟเวอร์ ข้อผิดพลาดคือ "ไคลเอนต์ไม่สามารถแสดงใบรับรอง"

สถานการณ์ #3 - ต้องการใบรับรองไคลเอ็นต์ ใช้ใบรับรอง B

  • ทุกอย่างเหมือนกับ #2 ทุกประการ ยกเว้นใช้ใบรับรองไคลเอ็นต์อื่น (B)
  • ใบรับรองถูกต้อง, 2048 บิต, ไวลด์การ์ด, ใช้สำเร็จสำหรับการตรวจสอบเซิร์ฟเวอร์ในบริการอื่นที่ไม่เกี่ยวข้อง, ออกโดย GeoTrust RSA CA 2018
  • ลูกค้าเชื่อมต่อตกลง

สิ่งที่เราเห็นจากบันทึกคือทั้งในสถานการณ์ #2 และ #3 ไคลเอ็นต์และเซิร์ฟเวอร์จะเจรจาเพื่อใช้ TLS 1.2

หลังจากดำเนินการข้างต้นหลายครั้ง ตรวจสอบทุกอย่าง ข้อสรุปเดียวของฉันคือใบรับรอง A เข้ากันไม่ได้กับการตั้งค่า - ไคลเอนต์ .NET ตัดสินใจที่จะไม่นำเสนอ หรือบริการไม่สามารถยอมรับได้ แต่สิ่งที่อาจแตกต่าง / ขาดหายไป?

hr flag
ถูกต้อง แต่อะไรจะทำให้ใบรับรองเข้ากันไม่ได้หรือไม่รู้จัก เมื่อใบรับรองเดียวกันทำงานสำเร็จสำหรับการรับรองความถูกต้องของเซิร์ฟเวอร์ในบริการอื่นที่ไม่เกี่ยวข้อง
hr flag
ฉันเดาว่า #1 และ #2 สามารถสมัครได้ที่นี่ - ฉันจะตรวจสอบ ใบรับรองยังไม่หมดอายุ ดังนั้นไม่ใช่ #3 ตามโพสต์ ข้อผิดพลาดเกิดขึ้นระหว่างการจับมือกันระหว่างไคลเอนต์ WCF และบริการ SOAP ดังนั้นจึงไม่มีหน้าเว็บที่เกี่ยวข้องที่นี่
Steeeve avatar
fr flag
แค่เดา: คุณได้ตรวจสอบแล้วว่าบัญชีผู้ใช้ของลูกค้ามีสิทธิ์อ่านคีย์ส่วนตัวของใบรับรอง A หรือไม่
hr flag
ขอบคุณ @Steeeve แต่สิทธิ์การอ่านบนคีย์ส่วนตัว cert A และ B เหมือนกัน และอยู่ในโฟลเดอร์ Windows store เดียวกัน
cn flag
การจับแพ็คเก็ตในไคลเอนต์สามารถยืนยันได้ว่ามีการแสดงใบรับรองหรือไม่ เปิดใช้งานและตรวจสอบบันทึกเหตุการณ์ของ Windows CAPI

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา