উত্তর:
সাথে openssl
:
openssl x509 -enddate -noout -in file.pem
আউটপুটটি ফর্মটিতে রয়েছে:
notAfter=Nov 3 22:23:50 2014 GMT
এছাড়াও শংসাপত্রটির মেয়াদ শেষ হয়ে গেছে কিনা তা কীভাবে সহজে পরীক্ষা করতে হবে বা উপরের তারিখটি বিশ্লেষণ না করে নির্দিষ্ট সময়ের মধ্যে এটি হবে কিনা তাও মাইকডাব্লুয়ের উত্তর দেখুন ।
যদি আপনি কেবল জানতে চান যে শংসাপত্রটির মেয়াদ শেষ হয়ে গেছে (বা পরবর্তী এন সেকেন্ডের মধ্যে এটি করবে) তবে -checkend <seconds>
বিকল্পটি openssl x509
আপনাকে বলবে:
if openssl x509 -checkend 86400 -noout -in file.pem
then
echo "Certificate is good for another day!"
else
echo "Certificate has expired or will do so within 24 hours!"
echo "(or is invalid/not found)"
fi
এটি নিজের সাথে তারিখ / সময় তুলনা করে সংরক্ষণ করে।
openssl
0
উপরের উদাহরণে শংসাপত্রটির মেয়াদ উত্তীর্ণ না হয়ে এবং পরবর্তী 86400 সেকেন্ডের জন্য এটি না করা হলে (শূন্য) এর একটি প্রস্থান কোড ফেরত পাঠাবে। যদি শংসাপত্রটির মেয়াদ শেষ হয়ে যায় বা ইতিমধ্যে এটি হয়ে থাকে - বা কোনও অবৈধ / অস্তিত্বহীন ফাইলের মতো অন্য কোনও ত্রুটি - রিটার্ন কোডটি 1
।
(অবশ্যই, এটি সময় / তারিখটি সঠিকভাবে সেট করা অনুমান করে)
-noout
অতিরিক্ত যুক্তি ছাড়াই একটি একক কমান্ড ব্যবহার করে একটি সহায়ক বার্তা দেখার বিকল্পটি ছাড়ুন । উদাহরণস্বরূপ, openssl x509 -checkend 0 -in file.pem
আউটপুট দেবে "শংসাপত্রের মেয়াদ শেষ হবে" বা "শংসাপত্রের মেয়াদ শেষ হবে না" নির্দেশ করে শংসাপত্রটি শূন্য সেকেন্ডে শেষ হবে কিনা।
এখানে অতিবাহিত হওয়ার আগে একাধিক শংসাপত্রের তালিকা দেওয়ার জন্য আমার বাশ কমান্ড লাইনটি এখানে রয়েছে, সম্প্রতি সম্প্রতি শেষ হচ্ছে।
for pem in /etc/ssl/certs/*.pem; do
printf '%s: %s\n' \
"$(date --date="$(openssl x509 -enddate -noout -in "$pem"|cut -d= -f 2)" --iso-8601)" \
"$pem"
done | sort
নমুনা আউটপুট:
2015-12-16: /etc/ssl/certs/Staat_der_Nederlanden_Root_CA.pem
2016-03-22: /etc/ssl/certs/CA_Disig.pem
2016-08-14: /etc/ssl/certs/EBG_Elektronik_Sertifika_Hizmet_S.pem
0 7 * * 1 /path/to/cert.sh | mail -s "certbot" my@email.com
এখানে একটি বাশ ফাংশন রয়েছে যা আপনার সমস্ত সার্ভার চেক করে ধরে নিবে আপনি ডিএনএস রাউন্ড-রবিন ব্যবহার করছেন। নোট করুন যে এর জন্য GNU তারিখ প্রয়োজন এবং ম্যাক ওএসে কাজ করবে না
function check_certs () {
if [ -z "$1" ]
then
echo "domain name missing"
exit 1
fi
name="$1"
shift
now_epoch=$( date +%s )
dig +noall +answer $name | while read _ _ _ _ ip;
do
echo -n "$ip:"
expiry_date=$( echo | openssl s_client -showcerts -servername $name -connect $ip:443 2>/dev/null | openssl x509 -inform pem -noout -enddate | cut -d "=" -f 2 )
echo -n " $expiry_date";
expiry_epoch=$( date -d "$expiry_date" +%s )
expiry_days="$(( ($expiry_epoch - $now_epoch) / (3600 * 24) ))"
echo " $expiry_days days"
done
}
আউটপুট উদাহরণ:
$ check_certs stackoverflow.com
151.101.1.69: Aug 14 12:00:00 2019 GMT 603 days
151.101.65.69: Aug 14 12:00:00 2019 GMT 603 days
151.101.129.69: Aug 14 12:00:00 2019 GMT 603 days
151.101.193.69: Aug 14 12:00:00 2019 GMT 603 days
expiry_date
মান সময় টাইপ অঞ্চল নাম এটি শেষ থেকে সরানো প্রয়োজন। cut
এটি করার জন্য পাইপের শেষে একটি অতিরিক্ত যুক্ত করুন :| cut -d ' ' -f 1-4
ডোমেনের শংসাপত্রের কিছু সময় পরে (উদা। 15 দিন) মেয়াদ শেষ হয়ে গেলে সত্য / মিথ্যাতে এক লাইন চেকিংয়ের মেয়াদ শেষ হয়ে যায়:
if openssl x509 -checkend $(( 24*3600*15 )) -noout -in <(openssl s_client -showcerts -connect may.domain.com:443 </dev/null 2>/dev/null | openssl x509 -outform PEM)
then
echo 'good'
else
echo 'bad'
fi
ম্যাক ওএসএক্সের (এল ক্যাপ্টেন) নিকোলাসের উদাহরণের এই পরিবর্তনটি আমার পক্ষে কাজ করেছিল।
for pem in /path/to/certs/*.pem; do
printf '%s: %s\n' \
"$(date -jf "%b %e %H:%M:%S %Y %Z" "$(openssl x509 -enddate -noout -in "$pem"|cut -d= -f 2)" +"%Y-%m-%d")" \
"$pem";
done | sort
নমুনা আউটপুট:
2014-12-19: /path/to/certs/MDM_Certificate.pem
2015-11-13: /path/to/certs/MDM_AirWatch_Certificate.pem
MacOS ভালো লাগে নি --date=
বা --iso-8601
আমার সিস্টেমে পতাকা।
.cer
আপনি কেবল অ্যাপল দেব সাইট থেকে তৈরি এবং ডাউনলোড করেছেন এমন শংসাপত্রগুলি না থাকলে আপনি কী করবেন ?
গৃহীত উত্তর হিসাবে একই, তবে মনে রাখবেন যে এটি .crt
ফাইলের সাথেও কাজ করে এবং কেবল .pem
ফাইল নয়, কেবলমাত্র যদি আপনি .pem
ফাইলের অবস্থান সন্ধান করতে না পারেন তবে ।
openssl x509 -enddate -noout -in e71c8ea7fa97ad6c.crt
ফলাফল:
notAfter=Mar 29 06:15:00 2020 GMT
-startdate
এবং-enddate
অপশন পাতাটাx509
ইউটিলিটি। তারা আপনাকে রক্ষা করবেgrep
।