আমার কাছে পিইএম ফর্ম্যাটে একটি এসএসএল সিআরটি ফাইল রয়েছে। কমান্ড লাইন থেকে শংসাপত্র থেকে সাধারণ নাম (সিএন) বের করার কোনও উপায় আছে কি?
আমার কাছে পিইএম ফর্ম্যাটে একটি এসএসএল সিআরটি ফাইল রয়েছে। কমান্ড লাইন থেকে শংসাপত্র থেকে সাধারণ নাম (সিএন) বের করার কোনও উপায় আছে কি?
উত্তর:
আপনি openssl
ইনস্টল করা থাকলে চালাতে পারেন:
openssl x509 -noout -subject -in server.pem
openssl x509 -noout -subject -in server.pem | sed -n '/^subject/s/^.*CN=//p'
sed -e 's/^subject.*CN=\([a-zA-Z0-9\.\-]*\).*$/\1/'
করেছি এবং সিএন-এর পরে আমার অতিরিক্ত বিশদ থাকার কারণে কেবলমাত্র ডোমেনটি পেয়েছিলাম। এটি কোনও বৈধ সিএন এর সাথে অত্যন্ত কঠোর মেলানো নয় তবে বেশিরভাগ ক্ষেত্রে এটি কাজ করে, আপনি আরও বেশি স্লো হয়ে থাকতে পারেন এবং এর সাথে প্রতিস্থাপন [a-zA-Z0-9\.\-]
করতে পারেন [^/]
তবে আমি নিশ্চিত নই যে সর্বদা কার্যকর হবে।
\*
কি ওয়াইল্ডকার্ড ডোমেইনের সমর্থন ব্যবহৃত @flungo হবে: sed -e 's/^subject.*CN=\([a-zA-Z0-9\.\-\*]*\).*$/\1/'
( [^/]
, আমার ক্ষেত্রে কাজ করে যদিও)
sed
যদি Cert উদাহরণ যে অবজেক্টের মধ্যে (OrganizationalUnit) জন্য, আপেক্ষিক বিশিষ্ট নাম (RDNs) কমন নেম (CN) পর নিদিষ্ট হয়েছে বা C (COUNTRY) কমান্ড উপরে প্রস্তাবিত কাজ করবে না। এই ক্ষেত্রে জন্য খাদ্যাদি ওয়ান ওয়ে একটি অতিরিক্ত হবে sed
: openssl x509 -noout -subject -in server.pem | sed 's/^.*CN=//' | sed sed 's/\/.*$//'
।
openssl x509 -noout -subject -nameopt multiline | grep commonName
বা কেবলমাত্র মানটির জন্য| sed -n 's/ *commonName *= //p'
certtool -i < whatever.pem | egrep "^\s+Subject:"
লক্ষ্য করুন যে <
এটি আর্গুমেন্ট হিসাবে ব্যবহার না করে স্ট্যান্ডার্ড ইনপুটটিতে ফাইলটি পরিচালনা করছে । সান egrep
এটি পুরো শংসাপত্রটি মুদ্রণ করবে, তবে সিএন Subject:
শীর্ষের ক্ষেত্রের মধ্যে রয়েছে (সাবধান থাকুন ক্ষেত্রের একটি সিএন মানও রয়েছে Issuer:
)।
X.509 Certificate Information:
Version: 3
Serial Number (hex): 01
Issuer: [...] CN=unixandlinux.ex <- Not this one.
Validity: ...
Subject: CN=goldilocks
certtool
এটি গুটলগুলির অংশ, এটি ইনস্টল না করা থাকলে কেবল এটির জন্য অনুসন্ধান করুন। GnuTLS ওপেনএসএসএল, আইএমওর চেয়ে কিছুটা সুন্দর।
gnutls-certtool
যার মাধ্যমে ইনস্টল করা ছিলbrew install gnutls
gnutls-bin
আমি উপরের উত্তরটি পেয়েছি এবং এটি খুব দরকারী বলে খুঁজে পেয়েছি, তবে আমি এটিও দেখতে পেয়েছি যে আউটপুট যেমন সোনালিলকস দ্বারা বর্ণিত certtool
কমান্ড সিনট্যাক্স (আজ উবুন্টু লিনাক্স-এ) ছিল তা লক্ষণীয়ভাবে পৃথক ছিল। সুতরাং, আমি "আজকের সংস্করণ" হতে পারে তার সাথে দুর্দান্ত উত্তরটি আপডেট করা ভাল বলে মনে করেছি।
"i"
বিকল্প (বর্তমানে?) অনুযায়ী ঘোরা "আমদানি" man certtool
তাই সঠিক কমান্ড উপস্থিত হতে পারে, "d"
"প্রদর্শন।" সুতরাং, এই আদেশ:
certtool d myfoo.crt
(আমার ক্ষেত্রে ফাইল-এক্সটেনশন মাত্র হতে হবে .crt
না .pem
... এই প্রাসঙ্গিক নয়।)
... আউটপুট উত্পাদন করে যা প্রাসঙ্গিক অংশে এর মতো দেখায়:
Common Name : Foobar
নিঃসন্দেহে, সোনারিলকস সঠিক ছিল: এই ক্ষেত্রেটির চেয়ে certtool
আউটপুট কাজ করা খুব সহজ openssl
।
certtool
যে অপশন Sans স্বাভাবিক অপারেটার (নেন -
বা --
), এবং man certtool
V জন্য। 3.5.8 (Debian), 3.5.16 (Fedora, মূল প্রজেক্টের স্থিতিশীল শাখায় যে পরে শুধুমাত্র সংস্করণ 3.5.17 থেকে এক মাস আগে), জ্ঞুটিএলএস-এর অনলাইন ডকুমেন্টেশন এবং প্রকৃতপক্ষে, উবুন্টু 17.10 (বর্তমান ডিবিয়ান হিসাবে একই সংস্করণ) এর অনলাইন ম্যান পেজ সমস্ত উল্লেখ করুন: