strongSwan send_cert: เมื่อใดที่ใบรับรอง IKE ถูกส่ง
send_cert ควบคุมว่า peer ส่งใบรับรองของตนหรือไม่ ส่วน send_certreq จะขอใบรับรองจากอีกฝ่าย ตรวจสอบบันทึกก่อนเปลี่ยนความเชื่อถือของผู้รับ
เกตเวย์บันทึกความล้มเหลวในการยืนยันตัวตนที่เกี่ยวกับใบรับรอง และปฏิกิริยาแรกคือการเพิ่ม CA อีกตัวให้ผู้รับ ซึ่งตั้งสมมติฐานว่าใบรับรองมาถึงแล้วและถูกปฏิเสธ ความเป็นไปได้อีกอย่างคือมันไม่เคยถูกส่งเลย และนโยบายการเชื่อมต่อของผู้ส่งเป็นตัวกำหนด ต้องระบุให้ได้ว่าเกิดกรณีใดก่อนแก้ไขความเชื่อถือ
send_cert ควบคุมอะไรจริง ๆ
การยืนยันตัวตนด้วยใบรับรองต้องให้ใบรับรองเอนทิตีปลายทางของ peer ไปถึงอีกฝ่ายผ่านการแลกเปลี่ยน IKE หรือการจัดเตรียมล่วงหน้า ใน swanctl การตั้งค่าการเชื่อมต่อ send_cert กำหนดว่าปลายทางนี้ใส่เพย์โหลดใบรับรองของตนหรือไม่ คือ never always หรือ ifasked ค่าเริ่มต้น ifasked จะส่งเมื่อมีการขอใบรับรองจาก peer การขอใบรับรองเป็นการตั้งค่าแยก เพราะการขอใบรับรองจากอีกฝ่ายไม่เหมือนกับการเสนอใบรับรองของตนเอง
การติดตั้ง ipsec.conf แบบเก่าใช้ leftsendcert และ rightsendcert และชื่อเหล่านี้ตรงกับบทบาทฝั่งท้องถิ่นและฝั่งระยะไกล ไม่ได้ตรงกับ swanctl โดยตรง
อ่านความพยายามหนึ่งครั้งก่อนแก้ไขการเชื่อมต่อ
วินิจฉัยจากความพยายามที่ควบคุมได้หนึ่งครั้ง ไม่ใช่จากความรู้สึกโดยรวมว่ามีใบรับรองเกี่ยวข้อง ทั้งนโยบายและสมาคมที่ใช้งานอยู่สามารถตรวจสอบได้
swanctl --list-conns
swanctl --list-sas
journalctl -u strongswan --since "10 min ago" | grep -iE "cert|CERT"
รายการการเชื่อมต่อแสดงค่า send_cert ที่ตั้งไว้ และรายการ SA แสดงว่าการเชื่อมต่อใดขึ้นจริง บันทึกเพิ่มรายละเอียดการเจรจา ว่าได้รับคำขอใบรับรองหรือไม่ และมีเพย์โหลดใบรับรองออกไปหรือไม่ ความล้มเหลวในการยืนยันตัวตนแบบกว้าง ๆ ไม่ได้ชี้ปัญหาการส่ง ดังนั้นให้หาการแลกเปลี่ยนที่เฉพาะเจาะจงก่อนสรุปสิ่งใด
ความเชื่อถือของผู้รับเป็นการตัดสินใจแยกต่างหาก
การส่งมอบและความเชื่อถือเป็นคุณสมบัติที่ต่างกัน และการแก้อย่างหนึ่งไม่ได้แก้อีกอย่าง ผู้รับต้องมีแองเคอร์ความเชื่อถือที่ตั้งใจไว้ ได้รับห่วงโซ่ที่ใช้งานได้ และตรงกับตัวตนของ peer ที่คาดไว้ ใบรับรองเอนทิตีปลายทางที่มาถึงโดยไม่มีใบรับรองกลางยังคงล้มเหลวในการตรวจห่วงโซ่แบบเข้มงวด ตรงกันข้าม การติดตั้ง CA ไม่ได้บังคับให้ peer ส่งใบรับรองเลย
openssl x509 -in peer-chain.pem -noout -subject -issuer -dates
การตรวจสอบแสดงว่าผู้ออกใบรับรองรายใดลงนามและเมื่อใดหมดอายุ และแองเคอร์ของผู้รับต้องสอดคล้องกับสิ่งนั้น ให้เชื่อถือ CA ผู้ออกที่การติดตั้งเป็นเจ้าของ ไม่ใช่ใบรับรองกลางทุกใบในห่วงโซ่ เพราะการยกใบรับรองกลางทุกใบขึ้นเป็นรากจะขยายความเชื่อถือไกลเกินกว่า peer หนึ่งตัวอย่างมาก คงการตรวจสอบตัวตนไว้ เพราะการเชื่อมต่อที่สำเร็จเฉพาะเมื่อปิดการตรวจสอบไม่ใช่การแก้ไข หากห่วงโซ่ไม่ครบ ให้ซ่อมการจัดเตรียมแทนนโยบายของผู้ส่ง
เปลี่ยนผู้ส่งเมื่อมีหลักฐานเท่านั้น
เมื่อบันทึกแสดงว่าใบรับรองไม่เคยถูกส่งและผู้รับได้ขอมาจริง การตั้ง send_cert เป็น always ถือเป็นการเปลี่ยนแปลงที่มีเหตุผลสำหรับการเชื่อมต่อนั้น นำไปใช้ในการกำหนดค่า swanctl โหลดการเชื่อมต่อใหม่ และสร้างเซสชันใหม่แทนการใช้ SA เดิมซ้ำ ยืนยันว่าเพย์โหลดใบรับรองปรากฏแล้วและผู้รับยอมรับตามแองเคอร์ที่ตั้งใจไว้ หากไม่มีอะไรเปลี่ยนแปลง ความผิดพลาดอยู่ฝั่งความเชื่อถือ และการตั้งค่าผู้ส่งไม่ใช่สาเหตุ
บันทึกการแลกเปลี่ยนที่สังเกตได้ แองเคอร์ และผลการตรวจสอบลงในบันทึกการเปลี่ยนแปลง การแก้ไขใบรับรองที่ไม่สามารถอธิบายด้วยถ้อยคำเหล่านี้เป็นเรื่องบังเอิญ