প্রশ্ন কিভাবে একটি বান্ডেল সব এসএসএল সার্টিফিকেট দেখতে?


আমি একটি সার্টিফিকেট বান্ডিল .crt ফাইল আছে।

করছেন openssl x509 -in bundle.crt -text -noout শুধুমাত্র রুট সার্টিফিকেট দেখায়।

আমি কিভাবে অন্য সব সার্টিফিকেট দেখতে পারি?


76
2018-04-23 18:15


উত্স




উত্তর:


http://comments.gmane.org/gmane.comp.encryption.openssl.user/43587 এই এক-মাছ ধরার নৌকা সুপারিশ:

openssl crl2pkcs7 -nocrl -certfile CHAINED.pem | openssl pkcs7 -print_certs -text -noout

এটা সত্যিই আমার জন্য কাজ করেছে, কিন্তু আমি বিস্তারিত বুঝতে পারছি না, তাই কোনও সতর্কবার্তা থাকলে বলতে পারি না।


88
2018-04-25 06:27



এটিই উত্তম উত্তর - আমি এমনকি আমার পিওথন সমাধানটি শেষ করব না! প্রতিটি সার্টিফিকেটের জন্য বিষয় / ইস্যুকারীর তথ্য পেতে "-text" ছেড়ে দিন। - Chris Wolf
এটা চেষ্টা /etc/ssl/certs/ca-certificates.crt এবং পেয়েছিলাম unable to load PKCS7 object - OrangeDog
এটি pkcs7 বিন্যাসের জন্য নয়, প্রশ্নটি x509 বিন্যাস বিন্দুগুলির সম্পর্কে? - Yetanotherjosh
এটি শুধুমাত্র মধ্যবর্তী হিসাবে pkcs7 ব্যবহার করে। ইনপুট PEM সংহত করা হয়। - Beni Cherniavsky-Paskin
তুমি অসাধারণ!!! - Jingguo Yao


অনুসরণ এই FAQ আমাকে নেতৃত্বে এই পার্ল স্ক্রিপ্ট, যা খুব দৃঢ়ভাবে আমাকে যে সুপারিশ openssl পরিচালনার জন্য কোন নেটিভ সমর্থন আছে এন একটি বান্ডেলের শংসাপত্র, এবং এর পরিবর্তে আমরা প্রতিটি শংসাপত্র খাওয়ানোর আগে ইনপুটটি স্লাইস-এবং-ডাইসে কিছু সরঞ্জাম ব্যবহার করতে হবে openssl। উপরে বর্ণিত নিক বুচারের স্ক্রিপ্ট থেকে মুক্তভাবে এই পার্ল স্ক্রিপ্টটি কাজ করে বলে মনে হচ্ছে:

#!/usr/bin/perl
# script for splitting multi-cert input into individual certs
# Artistic Licence
#
# v0.0.1         Nick Burch <nick@tirian.magd.ox.ac.uk>
# v0.0.2         Tom Yates <tyates@gatekeeper.ltd.uk>
#

$filename = shift;
unless($filename) {
  die("You must specify a cert file.\n");
}
open INP, "<$filename" or die("Unable to load \"$filename\"\n");

$thisfile = "";

while(<INP>) {
   $thisfile .= $_;
   if($_ =~ /^\-+END(\s\w+)?\sCERTIFICATE\-+$/) {
      print "Found a complete certificate:\n";
      print `echo \'$thisfile\' | openssl x509 -noout -text`;
      $thisfile = "";
   }
}
close INP;

20
2018-03-27 13:29





জাভার keytool কৌশলটি কি

keytool -printcert -v -file <certs.crt>

টীকা: উইন্ডোজ Doubleclick কাজ করে না। উইন্ডোজ কীস্টোরে শুধুমাত্র প্রথম সার্টিফিকেটটি পড়ে এবং স্বয়ংক্রিয়ভাবে তার অন্তর্নির্মিত শংসাপত্রের দোকান থেকে ট্রান্সচেইন প্রসারিত করে।

ফলাফল:

  1. সব প্রথম সার্টিফিকেট অতিক্রম .crt ফাইল দেখানো হয় না
  2. আপনি আপনার মধ্যে আছে একটি ভিন্ন ট্রাস্টচেইন প্রদর্শিত হতে পারে .crt ফাইল। এই ভুল সিদ্ধান্ত হতে পারে।

17
2017-09-03 07:18



উইন্ডোজ জিনিস ব্যাখ্যা করার জন্য ধন্যবাদ। এই সত্যিই আমার আউট জাহান্নাম বিভ্রান্তিকর ছিল - Nick.McDermaid


এটি সুন্দর, বা মার্জিত নাও হতে পারে, তবে এটি দ্রুত ছিল এবং আমার জন্য লিনাক্সে ব্যাশ ব্যবহার করে এবং পিএএম ফর্ম্যাটযুক্ত ব্লকগুলিকে একটি CA-cert বান্ডিল ফাইলে ব্যবহার করে।

while read line
do
    if [ "${line//END}" != "$line" ]; then
        txt="$txt$line\n"
        printf -- "$txt" | openssl x509 -subject -issuer -noout
        txt=""
    else
        txt="$txt$line\n"
    fi
done < /path/to/bundle/file

আপনি এটি সব এক লাইন রাখতে পারেন, এবং খোলার জন্য opensl বিকল্প সামঞ্জস্য করতে পারেন। আমি সত্যিই এই জন্য আরো মার্জিত সমাধান ছিল ইচ্ছুক, কিন্তু এই ক্ষেত্রে আমি মনে করি আরো মার্জিত সমাধান খুঁজে বের করতে হবে মার্জিত এক আউট হ্যাকিং চেয়ে বেশি সময়।


3
2017-11-09 01:08





কোন awk ভিত্তিক সমাধান আছে যেহেতু:

$ cat ca-bundle | awk '/BEGIN/ { i++; } /BEGIN/, /END/ { print > i ".extracted.crt" }'
$ ls *.extracted.crt | while read cert; do openssl x509 -in $cert -text -noout; done

প্রথম কমান্ডটি BEGIN এবং END লাইনগুলি সন্ধান করে কার্টগুলিতে বিভক্ত বান্ডিল। দ্বিতীয় কমান্ড নিষ্কাশন সার্টিফিকেট মাধ্যমে loops এবং তাদের দেখায়।


3
2018-04-19 06:55



Awk মধ্যে মুদ্রণ পুনঃনির্দেশ বৈশিষ্ট্য গাউক এবং নখ পাওয়া কিন্তু মৌলিক awk পাওয়া যায় না। এবং তাই, এটি লিনাক্সে কাজ করবে (gawk awk হিসাবে যুক্ত করা হয়), তবে এটি OS X তে নাও থাকতে পারে যা মৌলিক awk। - Raghu Dodda


Oneliner যা ফাইলের প্রতিটি শংসাপত্রের সারাংশ প্রদর্শন করে।

openssl crl2pkcs7 -nocrl -certfile CHAINED.pem | openssl pkcs7 -print_certs -noout

(অনুরূপ কমান্ডো অন্য উত্তরের মধ্যে উল্লিখিত, তবে এটি --text বিকল্প ছাড়া ছোট আউটপুট দেয়)।

উদাহরণ:

$ openssl crl2pkcs7 -nocrl -certfile bundled.crt | openssl pkcs7 -print_certs -noout

subject=/C=NL/postalCode=5705 CN/L=City/street=Example 20/O=Foobar B.V./OU=ICT/OU=Wildcard SSL/CN=*.example.com
issuer=/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Organization Validation Secure Server CA

subject=/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Organization Validation Secure Server CA
issuer=/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority

subject=/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority
issuer=/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Roo

3
2017-09-23 09:21



এই ভাল ব্যাখ্যা প্রয়োজন - Sven♦


Bash সাধারণত কোড এক শুধুমাত্র (লং) লাইন প্রয়োজন :-)

tfile=$( mktemp -u ) && \
csplit -z -q -f "$tfile" bundle.crt  '/----BEGIN CERTIFICATE-----/' '{*}' && \
find "${tfile%/*}" -name "${tfile##*/}*" -exec openssl x509 -noout -subject -in "{}" \; -delete

1
2017-10-23 00:59





মাদারহটারের পোস্টে ছোট পরিবর্তন আপনাকে সরাসরি CLI তে অনুলিপি / পেস্ট করার অনুমতি দেয়। আমি MD5 হ্যাশও অন্তর্ভুক্ত করেছি, যা সার্টিফিকেটগুলি সঠিক কিনা তা নিশ্চিত করার জন্য সহায়ক। স্টেডিন লাইনটি ফেরত এসেছে প্রত্যক্ষ (গুলি) এর MD5 হ্যাশ।

perl -e 'my $thisfile = "";
foreach (<>) {
   $thisfile .= $_;
   if($_ =~ /^\-+END(\s\w+)?\sCERTIFICATE\-+$/) {
      print "Found a complete certificate:\n";
      print `echo "$thisfile" | openssl x509 -noout -text`;
      print `echo "$thisfile" | openssl x509 -noout -modulus | openssl md5`;
      $thisfile = "";
   }
}' < my_id_cert_and_ca_bundle.crt

আপনি একটি সুন্দর সংক্ষিপ্ত সংক্ষিপ্ত আউটপুট দেখতে চান আপনি এই সংস্করণ ব্যবহার করুন। আপনি শুধুমাত্র আপনার সমস্ত শংসাপত্র অন্তর্ভুক্ত করেছেন কিনা তা যাচাই করার জন্য সহায়ক, তবে সত্যতা যাচাই (গুলি) এর ব্যবহার / ইত্যাদি যাচাই না করা।

perl -e 'my $thisfile = "";
foreach (<>) {
   $thisfile .= $_;
   if($_ =~ /^\-+END(\s\w+)?\sCERTIFICATE\-+$/) {
      print "Found a complete certificate:\n";
      print `echo "$thisfile" | openssl x509 -noout -serial -subject -dates -alias -issuer`;
      print `echo "$thisfile" | openssl x509 -noout -modulus | openssl md5` . "\n";
      $thisfile = "";
   }
}' < my_id_cert_and_ca_bundle.crt

আপনার opensl সংস্করণটি যদি সেই সমস্ত পতাকাগুলিকে সমর্থন করে না তবে এখানে কিছু egrep ব্যবহার করতে পারেন। প্রথম এক হিসাবে কিন্তু একই egipe যাও পাইপ একই জিনিস।

perl -e '.....
' < my_id_cert_and_ca_bundle.crt | egrep "Serial|Subject:|Not |Public-Key|^Cert|stdin|ssuer"

প্রাইভেট কী এর MD5 হ্যাশ চেক করার জন্য আপনি নিম্নলিখিতটি করতে পারেন।

openssl rsa -noout -modulus -in privateKey.key | openssl MD5

রেফারেন্স: এসএসএস শপপার - সার্টিফিকেট কী Matcher


0
2018-02-08 09:18





এখানে একটি awk ভিত্তিক সমাধান যে অন্তর্বর্তী ফাইল উপর নির্ভর করে না।

cat bundle.crt | awk '{
  if ($0 == "-----BEGIN CERTIFICATE-----") cert=""
  else if ($0 == "-----END CERTIFICATE-----") print cert
  else cert=cert$0
}' | while read CERT; do
  echo "$CERT" | base64 -d | openssl x509 -inform DER -text -noout
done

এটি stdin থেকে PEM ব্লকগুলি পড়ার মাধ্যমে এবং প্রতিটি ব্লককে একক বেস64 এনকোডেড লাইনে সংযুক্ত করে কাজ করে। লাইন তারপর পড়তে হয়, decoded এবং DER এনকোডেড শংসাপত্র হিসাবে openssl পাস।


0
2018-04-23 19:00



শুধুই মজার জন্য: cat bundle.crt | awk -v cmd="openssl x509 -subject -noout" '/-----BEGIN/ { c = $0; next } c { c = c "\n" $0 } /-----END/ { print c|cmd; close(cmd); c = 0 }'। - Manav


উইন্ডোজ পদ্ধতি

এক্ষেত্রে আপনি পুরো চেনটি দেখতে পারেন (অবশ্যই উইন্ডোজগুলিতে) CRT এ ডবল ক্লিক করুন এবং তারপরে শংসাপত্র পথ ট্যাবটি দেখুন। শুধুমাত্র একটি অন্তর্বর্তী, বা রুট সার্ট থাকলেও এটি সমগ্র শৃঙ্খলা প্রদর্শন করবে। বিস্তারিত জানার জন্য নীচের স্ক্রিনশট দেখুন। আপনি যদি উইন্ডোজ না হন তবে আমি ইউনিক্স / লিনাক্সের বৈচিত্র্যের সাথে আমার জ্ঞানের অভাবের জন্য ক্ষমাপ্রার্থী।

দ্রষ্টব্য: যদি মধ্যবর্তী সার্টিফিকেট আপনার স্থানীয় কীটপতঙ্গে থাকে তবে এটি মিথ্যা ফলাফলের কারণ হতে পারে উইন্ডোজ এটি স্বয়ংক্রিয়ভাবে যুক্ত করবে এবং শুধুমাত্র বান্ডিলের কী দেখাবে তা দেখাবে না।

enter image description here

লিনাক্স (উবুন্টু পদ্ধতি)

আমি আপনার প্রাথমিক কমান্ড অগ্রাহ্য এবং আপনার জায়গা এক জিনিস আছে। আপনার কমান্ড এই মত হওয়া উচিত:

openssl x509 -in bundle.crt -noout -text

সূত্র: http://manpages.ubuntu.com/manpages/hardy/man1/x509.1ssl.html


-2



সত্যি? আমি এটা sublte জানি কিন্তু আপনি সত্যিই বলতে পারেন না? আমার opensl x509-bundle.crt -noout -text হয়, তবে আপনার আছে -text -noout ... তাই সম্ভবত আপনি একটি সিনট্যাক্স ত্রুটি হচ্ছে কেন। - Brad Bouchard
আপনার ঘোড়া ধরুন, ব্র্যাড। প্রথমত, ওপি তার অভিযোগ করেননি openssl আহ্বান একটি সিনট্যাক্স ত্রুটি দিয়েছেন, কিন্তু এটি শুধুমাত্র বান্ডেল প্রথম সার্টিফিকেট তালিকাভুক্ত। দ্বিতীয়ত, দুটি আহরণ কার্যকরীভাবে অভিন্ন। তৃতীয়ত, এবং সম্ভবত সবচেয়ে গুরুত্বপূর্ণ, আপনার কাজ অন্তত আমার জন্য কাজ করে না; এটি, এছাড়াও, শুধুমাত্র বান্ডেল মধ্যে প্রথম সার্টিফিকেট তালিকা। - MadHatter
হ্যাঁ, আমি উবুন্টুতে এই ধরনের সমস্যাগুলির পক্ষে কিছু করছি না এবং ভাবলাম তিনি উইন্ডোজটিতে ছিলেন না যতক্ষণ না তিনি অন্যথায় আমাকে বলেছিলেন। তাই আমি ওপি হ্যাংিং ছেড়ে চলে যেতে চাইনি এবং অল্প কিছু অনুসন্ধানের পর আমি এই ধরনের কমান্ডের একটি রেফারেন্স সাইট যে কমান্ডটি দিয়েছিলাম তা নির্দেশ করেছিলাম (এটি একটি সামান্য ভিন্ন সিনট্যাক্স সহ) এবং এটি দেখতে চাই কিনা সাহায্য করুন। আপনার পয়েন্ট গ্রহণ করা হয়, কিন্তু পরের সময় আরো করুণা সঙ্গে এটা দয়া করে। - Brad Bouchard