কোনও সাইটের শংসাপত্র প্রত্যাহার করা হয়েছে কিনা তা যাচাই করতে কার্ল কীভাবে ব্যবহার করবেন?


26

Google.com- এর শংসাপত্র বাতিল হয়েছে কিনা তা পরীক্ষা করতে, আমি নিম্নলিখিত কমান্ডটি চেষ্টা করেছি:

curl https://www.google.com --cacert GeoTrust_Global_CA.pem --crlfile gtglobal.pem -v

তবে আমি ভয়ঙ্কর "এসএসএল শংসাপত্রের সমস্যা" ত্রুটি পেয়েছি:

* About to connect() to www.google.com port 443 (#0)
*   Trying 81.24.29.91... connected
* successfully set certificate verify locations:
*   CAfile: GeoTrust_Global_CA.pem
  CApath: /etc/ssl/certs
* successfully load CRL file:
*   CRLfile: gtglobal.pem
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS alert, Server hello (2):
* SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
* Closing connection #0
curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html

আমার ধারণা এই ত্রুটিটি সঠিক নয়, যেহেতু গুগলের একটি বৈধ শংসাপত্র থাকা উচিত।

আপনি কি জানেন যে আমি কীভাবে একটি কার্ল কমান্ড জারি করতে পারি যা এটি সঠিকভাবে করে?

আরো বিস্তারিত

আপনি যদি ভাবছেন যে কেন আমি কার্ল কমান্ডে এই নির্দিষ্ট ফাইলগুলি (জিওট্রাস্ট_গ্লোবাল_সিএপিএম এবং জিটিগ্লোবাল.পিএম) ব্যবহার করেছি, আমি এভাবে এগিয়ে চললাম:

  • আমি প্রথমে সিএ https://www.google.com এর শংসাপত্র জারি করে তা দেখেছিলাম । দেখা যাচ্ছে এটি জিও ট্রাস্ট গ্লোবাল সিএ;
  • আমি এখান থেকে জিও ট্রাস্ট গ্লোবাল সিএ রুট শংসাপত্র ডাউনলোড করেছি (এটি জিও ট্রাস্ট_গ্লোবাল_সিএপিএম ফাইল);
  • আমি থেকে সংশ্লিষ্ট সিআরএল (শংসাপত্রের প্রত্যাহার তালিকা) ডাউনলোড করা এখানে (এই gtglobal.pem ফাইল)।

আমার কাছে মনে হচ্ছে এটি ইতিমধ্যে কাজ করে? আমি নিশ্চিত না যে আপনার প্রশ্নটি কী।
এমটাক

1
@ এমটাক - যাচাইকরণ ব্যর্থ হয়েছে বিবেচনা করে মনে হচ্ছে যে শংসাপত্রটি যাচাই করতে ব্যর্থ হয়েছে সে কারণটি লেখক জিজ্ঞাসা করছেন, বর্তমান গুগল শংসাপত্র প্রত্যাহার হয়নি বলে বিবেচনা করে শংসাপত্রটি যাচাই করা উচিত ছিল।
রামহাউন্ড

দুঃখিত, আমি এখন বুঝতে পারি যে প্রশ্নটি কিছুটা অস্পষ্ট। আমি এটি সম্পাদনা করব। @Ramhound যে সঠিক :) হল
Claudiu

কোনও শংসাপত্র (যা আপনি ইতিমধ্যে টিএলএস হ্যান্ডশেকের সময় পেয়েছেন) কোনও সিআরএলে উপস্থিত রয়েছে কিনা তা নিশ্চিত করার জন্য আপনি কেন গুগল ডটকমের সাথে সংযোগ স্থাপন করবেন তা আমি নীতিগতভাবে বুঝতে পারি না (যা আপনি ইতিমধ্যে ডাউনলোড করেছেন)। আপনার নিজের কম্পিউটারে এটি করা উচিত নয়? কি হবে যদি google.com আসলে একটি MITM ছিলেন?
ক্রেগ হিক্স

এখানে শংসাপত্রের জন্য ম্যানুয়ালি চেক করার একটি উদাহরণ রয়েছে। উভয় সার্টিফিকেট একবার সিআরএল এ থাকে। এবং সিআরএল স্থানীয় স্মৃতিতে রয়েছে --- feistyduck.com/library/openssl%2dcookbook/online/…
ক্রেগ হিক্স

উত্তর:


12

এটি আমার প্রতিদিনের লিপি:

curl --insecure -v https://www.google.com 2>&1 | awk 'BEGIN { cert=0 } /^\* Server certificate:/ { cert=1 } /^\*/ { if (cert) print }'

Ouput:

* Server certificate:
*    subject: C=US; ST=California; L=Mountain View; O=Google Inc; CN=www.google.com
*    start date: 2016-01-07 11:34:33 GMT
*    expire date: 2016-04-06 00:00:00 GMT
*    issuer: C=US; O=Google Inc; CN=Google Internet Authority G2
*    SSL certificate verify ok.
* Server GFE/2.0 is not blacklisted
* Connection #0 to host www.google.com left intact

10

স্পষ্টতই, আপনি কেবল একটি সাধারণ অনুরোধ সহ কোনও সাইট যাচাই করতে পারবেন না। স্ট্যাকওভারফ্লোতে /programming/16244084/how-to-programmatic-check-if-a-cer ર્ટate-has-been-revoked?lq=1 এবং পুরানো সম্পর্কিত প্রশ্নগুলি দেখুন ।

কার্ল আমার পক্ষে শংসাপত্র প্রত্যাহার তালিকার সাথে কাজ করে নি, না উইন্ডোজ, না লিনাক্সে। আপনি কার্ল ব্যবহার করবেন কেন ? ওপেনসেল আরও উপযুক্ত বলে মনে হচ্ছে:

openssl s_client -connect www.google.com:443

আমরা পেতে

---
Certificate chain
 0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
   i:/C=US/O=Google Inc/CN=Google Internet Authority G2
 1 s:/C=US/O=Google Inc/CN=Google Internet Authority G2
   i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
 2 s:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
   i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
---

তারপরে আমরা কিছু শংসাপত্র পরিদর্শন করতে পারি:

curl http://pki.google.com/GIAG2.crt | openssl x509 -inform der -text

grep crlউপরের কমান্ডের আউটপুট এ। আকর্ষণীয় অংশগুলি হ'ল:

        X509v3 CRL Distribution Points:
            URI:http://crl.geotrust.com/crls/gtglobal.crl

        Authority Information Access:
            OCSP - URI:http://gtglobal-ocsp.geotrust.com

এখন আমরা ম্যানুয়ালি crl পরিদর্শন করতে পারি:

curl http://crl.geotrust.com/crls/gtglobal.crl | openssl crl -inform der -text
curl http://pki.google.com/GIAG2.crl | openssl crl -inform der -text

এখন আমরা প্রত্যাহার করা শংসাপত্রগুলির একটি তালিকা দেখি। আইএমএইচও, কার্ল ব্যবহার করা যথেষ্ট নয়, শংসাপত্রগুলি পরীক্ষা করার জন্য আরও একটি প্রোগ্রাম প্রয়োজন। একটি সাধারণ কাজ করে

strace curl https://www.google.com   -v

আমরা দেখতে পাচ্ছি যে কার্ল প্রত্যাহারগুলি পরীক্ষা করছে না (এমনকি সংশ্লিষ্ট জায়গাগুলির সাথে সংযোগও দিচ্ছে না)। এটা শুধু বলে

* Server certificate:
*        subject: C=US; ST=California; L=Mountain View; O=Google Inc; CN=www.google.com
*        start date: 2014-04-09 11:40:11 GMT
*        expire date: 2014-07-08 00:00:00 GMT
*        subjectAltName: www.google.com matched
*        issuer: C=US; O=Google Inc; CN=Google Internet Authority G2
*        SSL certificate verify ok.

2
আপনি কেন বলছেন কার্ল এটি করতে পারে না? কার্ল ম্যানপেজটি '--crlfile' বিকল্পটি নির্দিষ্ট করে যা এই উদ্দেশ্যে ঠিক উপস্থিত রয়েছে। এছাড়াও, কার্ল ওপেনসেল দিয়ে সংকলিত হয়েছে এবং এটি এর ক্রিপ্টো-সম্পর্কিত ক্রিয়াকলাপগুলির জন্য (শংসাপত্র সহ) ব্যবহার করে - এটি কেবল আমার জন্য কাজ করছে না, তা কেন অনুসন্ধান করার চেষ্টা করছে :)
ক্লাদিউ

3

স্পষ্টতই এটি উইন্ডোজ হিসাবে একটি খুব সাধারণ সমস্যা স্ট্যাকওভারফ্লোতে এই প্রশ্নটি । আমি বিশেষত ব্যবহারকারী Куриц нын এর উত্তর উল্লেখ করছি, যা আমি আপনার সুবিধার জন্য এখানে উদ্ধৃত করেছি:

এটি উইন্ডোজের একটি খুব সাধারণ সমস্যা। আপনার ঠিক সেট করা দরকার cacert.pem করতে হবে curl.cainfo

পিএইচপি 5.3.7 থেকে আপনি করতে পারেন:

  1. ডাউনলোডের http://curl.haxx.se/ca/cacert.pem এবং এটি কোথাও সংরক্ষণ করুন।
  2. আপডেট php.ini- যোগ করুন curl.cainfo = "PATH_TO / cacert.pem"

অন্যথায় প্রতিটি সিআরএল রিসোর্সের জন্য আপনাকে নিম্নলিখিতগুলি করতে হবে:

curl_setopt ($ch, CURLOPT_CAINFO, "PATH_TO/cacert.pem");

এছাড়াও, এই নিবন্ধটি দরকারী হতে পারে।


আমি যা জানি, কমান্ড-লাইন বিকল্প '--cacert' (যা আমি ব্যবহার করেছি) লাইবকার্লে CURLOPT_CAINFO বিকল্পটি সেট করার সমতুল্য, সুতরাং আমার ক্ষেত্রে এটি সমস্যা বলে মনে হয় না (এছাড়াও আমি আছি) লিনাক্স ব্যবহার করে)
ক্লাদিউ

প্রশ্নের ঠিক উত্তর নয়, এখনও খুব দরকারী তথ্য!
এথেন্স

1

আমি যেভাবে কাজ করতে দেখেছি তা অন্যের সাথে ইতিমধ্যে উদ্ভাসিত একইরকম, কেবল এটি আউটপুট প্রেরণ করে dev/nullএবং এটি ব্যবহারে তুলনামূলক দ্রুত।

curl -L -v -s https://www.google.de 1>/dev/null

# curl -L -v -s https://www.google.de 1>/dev/null
* About to connect() to www.google.de port 443 (#0)
*   Trying 216.58.208.35...
* Connected to www.google.de (216.58.208.35) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* SSL connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate:
*   subject: CN=www.google.de,O=Google LLC,L=Mountain View,ST=California,C=US
*   start date: Okt 23 16:53:00 2018 GMT
*   expire date: Jan 15 16:53:00 2019 GMT
*   common name: www.google.de
*   issuer: CN=Google Internet Authority G3,O=Google Trust Services,C=US
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: www.google.de
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Mon, 12 Nov 2018 15:36:17 GMT
< Expires: -1
< Cache-Control: private, max-age=0
< Content-Type: text/html; charset=ISO-8859-1
< P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."
< Server: gws
< X-XSS-Protection: 1; mode=block
< X-Frame-Options: SAMEORIGIN
< Set-Cookie: 1P_JAR=2018-11-12-15; expires=Wed, 12-Dec-2018 15:36:17 GMT; path=/; domain=.google.de
< Set-Cookie: NID=146=4SDchvTa39-4IskdXfZpgjtm2ym5zzvHVx8g0v39Q1fiOzk26NQl1TGkFMllh_pg8bFWr6x4jG3ODYDWrkn6TXmd0Ewp4DC_N3p1NPlWqdBUfwFR_PTHIXRi8RuTxdA54w9Zr0uNyhN__5xjUdrCLZTLujNEQ2MV9EVwnmxux6o; expires=Tue, 14-May-2019 15:36:17 GMT; path=/; domain=.google.de; HttpOnly
< Alt-Svc: quic=":443"; ma=2592000; v="44,43,39,35"
< Accept-Ranges: none
< Vary: Accept-Encoding
< Transfer-Encoding: chunked
<
{ [data not shown]
* Connection #0 to host www.google.de left intact

এটি সাইটের শংসাপত্র প্রত্যাহার করা হয়েছে কিনা সে সম্পর্কে আমাদের কিছু বলবে বলে মনে হয় না। প্রকৃতপক্ষে, ডকুমেন্টেশন অনুসারে, curlইউনিক্সে এটি পরীক্ষা করে না (যদি না আপনি নির্দিষ্টভাবে এটি কোনও এসএসএল লাইব্রেরি দিয়ে সংকলন করেন যা স্বয়ংক্রিয়ভাবে আপনার জন্য এটি করে)।
ট্রিপলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.