عميل 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 أو ملف تعريف الإدارة، وإلا عادت الشهادة

إذا عادت الشهادة بعد إعادة التشغيل، فالعمل لم ينته: شيء ما يملكها ويعيد تثبيتها. اعثر على ذلك المالك قبل الحذف مجددًا، لأن الحذف الثالث سيتصرف تمامًا مثل الأولين.

مقالات ذات صلة