এসএসএল শংসাপত্র থেকে সাধারণ নাম (সিএন) পাবেন?


63

আমার কাছে পিইএম ফর্ম্যাটে একটি এসএসএল সিআরটি ফাইল রয়েছে। কমান্ড লাইন থেকে শংসাপত্র থেকে সাধারণ নাম (সিএন) বের করার কোনও উপায় আছে কি?


3
দ্রষ্টব্য, তবে, বহু-ডোমেন শংসাপত্রগুলিতে, সিএন এ সমস্ত ধারণ করে না।
টর্স্টেন ব্রোঞ্জার

উত্তর:


89

আপনি opensslইনস্টল করা থাকলে চালাতে পারেন:

openssl x509 -noout -subject -in server.pem

5
আপনি এই বিষয়টির সাথে সিএন বের করতে পারবেন:openssl x509 -noout -subject -in server.pem | sed -n '/^subject/s/^.*CN=//p'
ম্যাথু বিকেট

1
@ ম্যাথিউবুকেট যা বলেছিলেন তা আমি সংশোধন sed -e 's/^subject.*CN=\([a-zA-Z0-9\.\-]*\).*$/\1/'করেছি এবং সিএন-এর পরে আমার অতিরিক্ত বিশদ থাকার কারণে কেবলমাত্র ডোমেনটি পেয়েছিলাম। এটি কোনও বৈধ সিএন এর সাথে অত্যন্ত কঠোর মেলানো নয় তবে বেশিরভাগ ক্ষেত্রে এটি কাজ করে, আপনি আরও বেশি স্লো হয়ে থাকতে পারেন এবং এর সাথে প্রতিস্থাপন [a-zA-Z0-9\.\-]করতে পারেন [^/]তবে আমি নিশ্চিত নই যে সর্বদা কার্যকর হবে।
ফ্লুনগো

1
যোগ \*কি ওয়াইল্ডকার্ড ডোমেইনের সমর্থন ব্যবহৃত @flungo হবে: sed -e 's/^subject.*CN=\([a-zA-Z0-9\.\-\*]*\).*$/\1/' ( [^/], আমার ক্ষেত্রে কাজ করে যদিও)
Bryn

1
sedযদি Cert উদাহরণ যে অবজেক্টের মধ্যে (OrganizationalUnit) জন্য, আপেক্ষিক বিশিষ্ট নাম (RDNs) কমন নেম (CN) পর নিদিষ্ট হয়েছে বা C (COUNTRY) কমান্ড উপরে প্রস্তাবিত কাজ করবে না। এই ক্ষেত্রে জন্য খাদ্যাদি ওয়ান ওয়ে একটি অতিরিক্ত হবে sed: openssl x509 -noout -subject -in server.pem | sed 's/^.*CN=//' | sed sed 's/\/.*$//'
ওহাদ স্নাইডার

6
সাবজেক্ট নামে অন্য আরডিএন / এটিভি থেকে সিএন আলাদা করার সহজ উপায় : openssl x509 -noout -subject -nameopt multiline | grep commonNameবা কেবলমাত্র মানটির জন্য| sed -n 's/ *commonName *= //p'
dave_thompson_085

7
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 ওপেনএসএসএল, আইএমওর চেয়ে কিছুটা সুন্দর।


2
ভাল উত্তর, +1। Mac OS X এর জন্য, আমি ব্যবহার ছিল gnutls-certtoolযার মাধ্যমে ইনস্টল করা ছিলbrew install gnutls
মাইক ডি

ডেবিয়ান ইনস্টলgnutls-bin
rubo77

1

আমি উপরের উত্তরটি পেয়েছি এবং এটি খুব দরকারী বলে খুঁজে পেয়েছি, তবে আমি এটিও দেখতে পেয়েছি যে আউটপুট যেমন সোনালিলকস দ্বারা বর্ণিত certtoolকমান্ড সিনট্যাক্স (আজ উবুন্টু লিনাক্স-এ) ছিল তা লক্ষণীয়ভাবে পৃথক ছিল। সুতরাং, আমি "আজকের সংস্করণ" হতে পারে তার সাথে দুর্দান্ত উত্তরটি আপডেট করা ভাল বলে মনে করেছি।

"i"বিকল্প (বর্তমানে?) অনুযায়ী ঘোরা "আমদানি" man certtoolতাই সঠিক কমান্ড উপস্থিত হতে পারে, "d""প্রদর্শন।" সুতরাং, এই আদেশ:

certtool d myfoo.crt

(আমার ক্ষেত্রে ফাইল-এক্সটেনশন মাত্র হতে হবে .crtনা .pem... এই প্রাসঙ্গিক নয়।)

... আউটপুট উত্পাদন করে যা প্রাসঙ্গিক অংশে এর মতো দেখায়:

Common Name     : Foobar

নিঃসন্দেহে, সোনারিলকস সঠিক ছিল: এই ক্ষেত্রেটির চেয়ে certtoolআউটপুট কাজ করা খুব সহজ openssl


1
আমার সন্দেহ হয় আমরা সম্পূর্ণ আলাদা আলাদা সফটওয়্যার নিয়ে কথা বলছি। আমি একটি সংস্করণ দেখিনি certtoolযে অপশন Sans স্বাভাবিক অপারেটার (নেন -বা --), এবং man certtoolV জন্য। 3.5.8 (Debian), 3.5.16 (Fedora, মূল প্রজেক্টের স্থিতিশীল শাখায় যে পরে শুধুমাত্র সংস্করণ 3.5.17 থেকে এক মাস আগে), জ্ঞুটিএলএস-এর অনলাইন ডকুমেন্টেশন এবং প্রকৃতপক্ষে, উবুন্টু 17.10 (বর্তমান ডিবিয়ান হিসাবে একই সংস্করণ) এর অনলাইন ম্যান পেজ সমস্ত উল্লেখ করুন:
সোনারলকস

"-i, --certificate-তথ্য: প্রদত্ত সার্টিফিকেটে তথ্য মুদ্রণ করুন," যেহেতু "-d" হয় "--debug"। খুব অদ্ভুত. O_o?
স্বর্ণলোকস

-1

আমি ব্যবহার করেছি: আপনি যদি সাদা জায়গার সাথে না থাকতে পারেন openssl x509 -noout -subject -in mycert.crt | awk -F= '{print $NF}'তবে যোগ করুন| sed -e 's/^[ \t]*//'

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.