একটি ট্রাস্ট স্টোর থেকে পুরোনো VPN সার্টিফিকেট কীভাবে সরাবেন
VPN প্রোফাইল মুছলে সার্টিফিকেটটি OS, ব্রাউজার বা অ্যাপ স্টোরে থেকে যায়। ফিঙ্গারপ্রিন্ট দিয়ে মেলান, সবচেয়ে সংকীর্ণ কপি মুছুন, তারপর চেইন যাচাই করুন।
আপনার VPN ক্লায়েন্ট আনইনস্টল করা হয়েছে, প্রোফাইলটি সেটিংস থেকে চলে গেছে, তবুও টানেলটি পুরোনো ক্রেডেনশিয়াল দিয়েই উঠে আসে। অথবা আপনি এটি মুছেন, রিবুট করেন, আর পরের সকালে সেটি আবার ফিরে পান। এর কোনোটিই ভাঙা ডিলিট বোতাম নয়। প্রোফাইল হলো কনফিগারেশন; সার্টিফিকেট হলো কী মেটেরিয়াল এবং একটি ট্রাস্ট সিদ্ধান্ত, যা এমন একটি স্টোরে রেকর্ড করা থাকে যেখানে প্রোফাইল কেবল ইশারা করে। আপনার হাতে কোনটি আছে, সেটাই ঠিক করে 'সরানো' মানে কী হতে হবে।
প্রোফাইল কোনো সার্টিফিকেট নয়
একটি VPN সেটআপে তিনটি ভিন্ন বস্তুকে 'সার্টিফিকেট' বলা হয়। ক্লায়েন্ট আইডেন্টিটি হলো প্রাইভেট কীসহ একটি লিফ সার্টিফিকেট, আর গেটওয়ে সেটি দিয়ে ঠিক করে আপনি কে। সার্ভারের নিজের লিফ ও তার ইন্টারমিডিয়েট হলো যা আপনার ক্লায়েন্ট সংযোগের সময় যাচাই করে। ট্রাস্ট অ্যাঙ্কর, সাধারণত একটি রুট বা প্রাইভেট CA সার্টিফিকেট, সেটিই যা চেইনটিকে আদৌ যাচাইযোগ্য করে। RFC 5280 এদের ট্রাস্ট অ্যাঙ্কর, ইন্টারমিডিয়েট ও এন্ড এন্টিটি বলে, আর চেইন তখনই বৈধ হয় যখন প্রতিটি লিংক তার নিচের লিংকে সই করে।
আইডেন্টিটি মুছুন, একটি ডিভাইস অ্যাক্সেস হারায়। অ্যাঙ্কর মুছুন আর সেই স্টোরের বিপরীতে যাচাই করা প্রতিটি অ্যাপ্লিকেশন তার অধীনে জারি করা যে কোনো কিছু পরীক্ষা করার ক্ষমতা হারায়, যার মধ্যে VPN-এর সঙ্গে সম্পর্কহীন সংযোগও আছে। এই অসমতাই এখানে পুরো ঝুঁকি: একটি গেটওয়ের জন্য ইনস্টল করা রুট প্রায়ই সেই একই রুট, যা একটি অভ্যন্তরীণ পোর্টাল, মেইল সার্ভার বা প্যাকেজ মিররে সই করে। মনে রাখুন দুইটির মধ্যে কোনটি আপনার হাতে।
মালিকানা ঠিক করে ডিলিটটি মুছে থাকবে কি না। আপনার নিজের ল্যাপটপে কেবল আপনিই সার্টিফিকেটটি ফিরিয়ে রাখতে পারেন। ম্যানেজড ডিভাইসে একটি কনফিগারেশন প্রোফাইল বা MDM পেলোড পরের চেক-ইনে এটি পুনরায় ইনস্টল করতে পারে, তাই এটি 'ফিরে আসে' এবং তাই আরও জোরে মুছলেও কাজ হয় না।
কোন স্টোর এখনও এটি ধরে আছে খুঁজুন
মানুষ সেটিংস অ্যাপ থেকে শুরু করে, অথচ সার্টিফিকেট ঠিক সেখানেই সংরক্ষিত থাকে না। আসল জায়গাগুলো হলো OS-এর ট্রাস্ট স্টোর, ব্রাউজারের নিজস্ব স্টোর ও অ্যাপ্লিকেশনের প্রাইভেট স্টোর।
| 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-verify যে CRL-এর উল্লেখ করে সেটি হালনাগাদ কিনা নিশ্চিত করা; 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 পেলোড বা ম্যানেজমেন্ট প্রোফাইল হালনাগাদ, নইলে সার্টিফিকেট ফিরে আসবে
রিবুটের পর সার্টিফিকেট ফিরে এলে কাজ শেষ হয়নি: কিছু এটির মালিক এবং পুনরায় ইনস্টল করে। আবার মোছার আগে সেই মালিককে খুঁজুন, কারণ তৃতীয় ডিলিট প্রথম দুটির মতোই আচরণ করবে।