ไคลเอนต์ VPN ของคุณถูกถอนการติดตั้ง โปรไฟล์หายไปจากการตั้งค่า แต่ทันเนลยังคงขึ้นมาด้วยข้อมูลรับรองเก่า หรือคุณลบมัน รีบูต แล้วพบมันกลับมาในเช้าวันรุ่งขึ้น ทั้งสองกรณีไม่ใช่ปุ่มลบที่เสียหาย โปรไฟล์คือการกำหนดค่า ส่วนใบรับรองคือวัสดุกุญแจบวกกับการตัดสินใจเรื่องความเชื่อถือที่บันทึกไว้ในที่เก็บซึ่งโปรไฟล์เพียงชี้ไปเท่านั้น สิ่งที่คุณถืออยู่ในมือเป็นตัวกำหนดว่า 'ลบ' ต้องหมายถึงอะไร

โปรไฟล์ไม่ใช่ใบรับรอง

ในการตั้งค่า VPN มีวัตถุสามอย่างที่ถูกเรียกว่า 'ใบรับรอง' ตัวตนของไคลเอนต์คือใบรับรองใบที่มีกุญแจส่วนตัว และเกตเวย์ใช้มันตัดสินว่าคุณเป็นใคร ใบรับรองใบของเซิร์ฟเวอร์เองและตัวกลางของมันคือสิ่งที่ไคลเอนต์ของคุณตรวจสอบเมื่อเชื่อมต่อ สมอยึดความเชื่อถือ ซึ่งมักเป็นใบรับรองรากหรือ CA ส่วนตัว คือสิ่งที่ทำให้ห่วงโซ่ตรวจสอบได้เลย RFC 5280 เรียกสิ่งเหล่านี้ว่าสมอยึดความเชื่อถือ ตัวกลาง และเอนทิตีปลายทาง และห่วงโซ่จะใช้ได้ก็ต่อเมื่อแต่ละข้อต่อลงนามข้อต่อที่อยู่ใต้มัน

ลบตัวตนแล้วอุปกรณ์หนึ่งเครื่องจะเสียการเข้าถึง ลบสมอยึดแล้ว ทุกแอปพลิเคชันที่ตรวจสอบกับที่เก็บนั้นจะเสียความสามารถในการตรวจสอบสิ่งใดก็ตามที่ออกภายใต้มันรวมถึงการเชื่อมต่อที่ไม่เกี่ยวข้องกับ VPN เลย ความไม่สมดุลนี้คือความเสี่ยงทั้งหมดตรงนี้ รากที่ติดตั้งเพื่อเกตเวย์หนึ่งมักเป็นรากเดียวกันกับที่ลงนามพอร์ทัลภายใน เซิร์ฟเวอร์อีเมล หรือมิเรอร์แพ็กเกจ จำไว้ว่าคุณถือสิ่งใดในสองสิ่งนี้

ความเป็นเจ้าของตัดสินว่าการลบจะคงอยู่ถาวรหรือไม่ บนแล็ปท็อปที่คุณเป็นเจ้าของ คุณเป็นคนเดียวที่ใส่ใบรับรองกลับได้ บนอุปกรณ์ที่ถูกจัดการ โปรไฟล์การกำหนดค่าหรือเพย์โหลด MDM อาจติดตั้งมันใหม่ในการเช็กอินครั้งถัดไป นี่คือเหตุผลที่มัน 'กลับมา' และเหตุผลที่การลบให้หนักขึ้นไม่ช่วย

หาว่าที่เก็บใดยังคงมีมันอยู่

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

StoreWhat deleting from it affects
Windows CurrentUser\Myyour login session only
Windows LocalMachine Rootevery user and service on the machine
macOS login or System keychainone account, or all of them with sudo
Linux ca-certificates bundlecurl, git, Python, anything using the system bundle
Firefox cert9.dbFirefox 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 หรือโปรไฟล์การจัดการ มิฉะนั้นใบรับรองจะกลับมา

หากใบรับรองกลับมาหลังรีบูต งานยังไม่เสร็จ: มีบางอย่างเป็นเจ้าของและติดตั้งมันใหม่ หาเจ้าของนั้นก่อนลบอีกครั้ง เพราะการลบครั้งที่สามจะทำงานเหมือนสองครั้งแรกทุกประการ

บทความที่เกี่ยวข้อง