วิธีลบใบรับรอง VPN ที่ล้าสมัยออกจากที่เก็บความเชื่อถือ
การลบโปรไฟล์ VPN ยังทิ้งใบรับรองไว้ในระบบปฏิบัติการ เบราว์เซอร์ หรือร้านแอป จับคู่ด้วยลายนิ้วมือ ลบสำเนาที่แคบที่สุด แล้วตรวจสอบห่วงโซ่
ไคลเอนต์ VPN ของคุณถูกถอนการติดตั้ง โปรไฟล์หายไปจากการตั้งค่า แต่ทันเนลยังคงขึ้นมาด้วยข้อมูลรับรองเก่า หรือคุณลบมัน รีบูต แล้วพบมันกลับมาในเช้าวันรุ่งขึ้น ทั้งสองกรณีไม่ใช่ปุ่มลบที่เสียหาย โปรไฟล์คือการกำหนดค่า ส่วนใบรับรองคือวัสดุกุญแจบวกกับการตัดสินใจเรื่องความเชื่อถือที่บันทึกไว้ในที่เก็บซึ่งโปรไฟล์เพียงชี้ไปเท่านั้น สิ่งที่คุณถืออยู่ในมือเป็นตัวกำหนดว่า 'ลบ' ต้องหมายถึงอะไร
โปรไฟล์ไม่ใช่ใบรับรอง
ในการตั้งค่า VPN มีวัตถุสามอย่างที่ถูกเรียกว่า 'ใบรับรอง' ตัวตนของไคลเอนต์คือใบรับรองใบที่มีกุญแจส่วนตัว และเกตเวย์ใช้มันตัดสินว่าคุณเป็นใคร ใบรับรองใบของเซิร์ฟเวอร์เองและตัวกลางของมันคือสิ่งที่ไคลเอนต์ของคุณตรวจสอบเมื่อเชื่อมต่อ สมอยึดความเชื่อถือ ซึ่งมักเป็นใบรับรองรากหรือ CA ส่วนตัว คือสิ่งที่ทำให้ห่วงโซ่ตรวจสอบได้เลย RFC 5280 เรียกสิ่งเหล่านี้ว่าสมอยึดความเชื่อถือ ตัวกลาง และเอนทิตีปลายทาง และห่วงโซ่จะใช้ได้ก็ต่อเมื่อแต่ละข้อต่อลงนามข้อต่อที่อยู่ใต้มัน
ลบตัวตนแล้วอุปกรณ์หนึ่งเครื่องจะเสียการเข้าถึง ลบสมอยึดแล้ว ทุกแอปพลิเคชันที่ตรวจสอบกับที่เก็บนั้นจะเสียความสามารถในการตรวจสอบสิ่งใดก็ตามที่ออกภายใต้มันรวมถึงการเชื่อมต่อที่ไม่เกี่ยวข้องกับ VPN เลย ความไม่สมดุลนี้คือความเสี่ยงทั้งหมดตรงนี้ รากที่ติดตั้งเพื่อเกตเวย์หนึ่งมักเป็นรากเดียวกันกับที่ลงนามพอร์ทัลภายใน เซิร์ฟเวอร์อีเมล หรือมิเรอร์แพ็กเกจ จำไว้ว่าคุณถือสิ่งใดในสองสิ่งนี้
ความเป็นเจ้าของตัดสินว่าการลบจะคงอยู่ถาวรหรือไม่ บนแล็ปท็อปที่คุณเป็นเจ้าของ คุณเป็นคนเดียวที่ใส่ใบรับรองกลับได้ บนอุปกรณ์ที่ถูกจัดการ โปรไฟล์การกำหนดค่าหรือเพย์โหลด MDM อาจติดตั้งมันใหม่ในการเช็กอินครั้งถัดไป นี่คือเหตุผลที่มัน 'กลับมา' และเหตุผลที่การลบให้หนักขึ้นไม่ช่วย
หาว่าที่เก็บใดยังคงมีมันอยู่
ผู้คนเริ่มในแอปการตั้งค่า ซึ่งเป็นที่เดียวที่ใบรับรองไม่ได้ถูกเก็บไว้ ตำแหน่งจริงคือที่เก็บความเชื่อถือของระบบปฏิบัติการ ที่เก็บของเบราว์เซอร์เอง และที่เก็บส่วนตัวของแอปพลิเคชัน
| Store | What deleting from it affects |
|---|---|
| Windows CurrentUser\My | your login session only |
| Windows LocalMachine Root | every user and service on the machine |
| macOS login or System keychain | one account, or all of them with sudo |
| Linux ca-certificates bundle | curl, git, Python, anything using the system bundle |
| Firefox cert9.db | Firefox only; it does not read the OS store |
จับคู่ด้วยหมายเลขซีเรียลหรือลายนิ้วมือ ไม่ใช่ชื่อที่แสดง ชื่อที่แสดงถูกกำหนดโดยผู้ออกใบรับรองและถูกใช้ซ้ำ 'Example VPN' อาจเป็นใบรับรองสามใบที่มีกุญแจต่างกันสามดอก ซึ่งหนึ่งยังใช้อยู่ในชีวิตประจำวัน
certutil -user -store My
certutil -store Root
openssl x509 -in vpn-client.pem -noout -subject -issuer -serial -fingerprint -sha256
บน macOS เครื่องมือ security ให้ข้อเท็จจริงเดียวกัน และ find-identity แสดงว่าใบรับรองใดยังมีกุญแจส่วนตัวผูกอยู่:
security find-certificate -a -c "Example VPN" -Z /Library/Keychains/System.keychain
security find-identity -v -p ssl-client
ลบวัตถุที่แคบ รักษาผู้ออกที่ใช้ร่วมกัน
ส่งออกก่อนลบ หากไม่มีสำรอง ทางกู้คืนเดียวคือออกใหม่ซึ่งบน CA ส่วนตัวหมายถึงการกลับไปหาผู้ที่ดูแล PKI PFX ที่ส่งออกยังเป็นสิ่งที่คุณมอบให้หากการลบกลายเป็นการตัดสินใจที่ผิด
certutil -user -exportPFX -p backup My <serial> C:\temp\vpn-id.pfx
certutil -user -delstore My <serial>
Remove-Item Cert:\CurrentUser\My<thumbprint>
แฟล็ก -user คือสิ่งที่ผู้คนเผลอทิ้งบ่อยที่สุด หากไม่มีมัน certutil จะทำงานกับที่เก็บของเครื่องแทน ซึ่งหมายถึงเชลล์ที่ยกระดับ ชุดใบรับรองที่ต่างออกไป และรัศมีผลกระทบที่ครอบคลุมทุกบัญชีอื่นบนเครื่อง
บน macOS และ Linux รูปแบบเดียวกัน: ระบุ ส่งออก แล้วลบจากที่เก็บที่แคบที่สุดซึ่งอธิบายอาการ การลบไฟล์ใต้ /usr/local/share/ca-certificates และเรียกใช้ update-ca-certificates อีกครั้งก็เพียงพอ --fresh ช่วยได้เฉพาะเมื่อซิมลิงก์ใน /etc/ssl/certs ไม่สอดคล้องกันอยู่แล้ว ระบบตระกูล RHEL เก็บสมอยึดไว้ใน /etc/pki/ca-trust/source/anchorsซึ่ง trust anchor --remove ทำงานเดียวกัน
sudo security delete-certificate -Z <sha1> /Library/Keychains/System.keychain
sudo rm /usr/local/share/ca-certificates/example-vpn.crt
sudo update-ca-certificates
sudo trust anchor --remove /etc/pki/ca-trust/source/anchors/example-vpn.crt
ก่อนลบใบรับรอง CA ให้ตรวจว่ามีอะไรอื่นเชื่อมกับมันอีก การแสดงรายการตัวแบบในบันเดิลเป็นการตรวจสองบรรทัดและตอบว่าสมอยึดนั้นทำงานอื่นอยู่หรือไม่:
openssl crl2pkcs7 -nocrl -certfile /etc/ssl/certs/ca-certificates.crt \
| openssl pkcs7 -print_certs -noout | grep -i example
การลบไฟล์ไม่ใช่การเพิกถอนตัวตน
การลบในเครื่องลบสำเนาหนึ่งชุด กุญแจส่วนตัวอาจยังอยู่ใน p12 ที่แนบกับตั๋วเก่า โฟลเดอร์สำรอง หรือแล็ปท็อปเครื่องที่สองที่ตั้งค่าในเวลาเดียวกัน หากนี่คือตัวตนของไคลเอนต์ เกตเวย์ยังคงยอมรับสำเนาใด ๆ ของกุญแจนั้นจนกว่าตัวตนจะถูกปฏิเสธที่ฝั่งเซิร์ฟเวอร์
สำหรับ OpenVPN PKI นั่นหมายถึงการเพิกถอนใบรับรองและตรวจสอบให้แน่ใจว่า CRL ที่ crl-verify อ้างถึงนั้นเป็นปัจจุบัน easyrsa revoke แล้ว easyrsa gen-crl คือเวอร์ชันสั้น สำหรับเกตเวย์ที่ผูกกับผู้ให้บริการตัวตน ให้ปิดใช้งานผู้ใช้หรือลบอุปกรณ์ที่นั่น เพราะใบรับรองเป็นเพียงข้อมูลรับรองหนึ่งรายการในการเล่น การลบสำเนาในเครื่องขณะที่บัญชียังใช้งานอยู่ดูเหมือนการทำความสะอาดและไม่ใช่
งานด้านเหตุการณ์มีลำดับต่างออกไป: เก็บรักษาใบรับรอง หมายเลขซีเรียล และบันทึกการเพิกถอนไว้ก่อน แล้วจึงลบและเพิกถอน บันทึกเหล่านั้นไม่มีค่าใช้จ่ายและไม่ต้องทิ้งข้อมูลรับรองที่ใช้งานได้ไว้ในที่เดิม
ตรวจสอบด้วยแฮนด์เชกและแอปที่สอง
ตรวจสอบห่วงโซ่จากภายนอก ไม่ใช่จากรายการที่เก็บที่คุณเพิ่งแก้ไข ที่เก็บแสดงการแก้ไขของคุณ แฮนด์เชกแสดงผลลัพธ์
openssl s_client -connect vpn.example.com:443 -servername vpn.example.com \
-CAfile /etc/ssl/certs/ca-certificates.crt -verify_return_error < /dev/null
openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt vpn-gateway.pem
รหัสตอบกลับ 0 หมายความว่าสมอยึดที่เหลือยังตรวจสอบเกตเวย์ได้ ข้อผิดพลาดของห่วงโซ่หลังลบสมอยึดเป็นผลลัพธ์ที่คาดไว้ และยืนยันว่าคุณโดนสมอยึดที่ใช้งานอยู่ ไม่ใช่สำเนาในที่เก็บที่ไคลเอนต์ไม่เคยอ่าน หากการเชื่อมต่อยังทำงาน ให้มองหาสำเนาที่สอง ที่เก็บที่ฝังในแอป หรือใบรับรองที่ปักหมุด ซึ่งพบได้ทั่วไปในไคลเอนต์ที่นำรายการความเชื่อถือของตัวเองมา
จากนั้นทดสอบสิ่งที่ไม่เกี่ยวข้อง: ไซต์ภายใน ไคลเอนต์อีเมล มิเรอร์แพ็กเกจ นั่นวัดรัศมีผลกระทบได้อย่างประหยัด ก่อนที่หน้าต่างการเปลี่ยนแปลงจะปิด
- ระบุบทบาทได้ว่าเป็นตัวตน ตัวกลาง หรือสมอยึดความเชื่อถือ
- บันทึกหมายเลขซีเรียลและลายนิ้วมือ และส่งออกสำเนาไปยังตำแหน่งที่อนุมัติ
- ลบในขอบเขตที่แคบที่สุดซึ่งอธิบายอาการ
- เพิกถอนการอนุญาตฝั่งเซิร์ฟเวอร์เมื่อบุคคลหรืออุปกรณ์จากไป
- อธิบายแฮนด์เชก และทดสอบแอปที่ไม่เกี่ยวข้องหนึ่งตัวอีกครั้ง
- อัปเดตเพย์โหลด MDM หรือโปรไฟล์การจัดการ มิฉะนั้นใบรับรองจะกลับมา
หากใบรับรองกลับมาหลังรีบูต งานยังไม่เสร็จ: มีบางอย่างเป็นเจ้าของและติดตั้งมันใหม่ หาเจ้าของนั้นก่อนลบอีกครั้ง เพราะการลบครั้งที่สามจะทำงานเหมือนสองครั้งแรกทุกประการ