কেন ওপেনসেল এস_প্লায়েন্ট একটি অমিল ক্যাফিলের বিরুদ্ধে একটি সার্ট যাচাই করে?


10

আমি এর সাথে একটি শংসাপত্র যাচাইয়ের ত্রুটি উত্পন্ন করার চেষ্টা করছি openssl s_client:

$ openssl s_client -crlf -verify 9 \
  -CAfile /etc/ssl/certs/TURKTRUST_Certificate_Services_Provider_Root_1.pem \
  -starttls smtp -host mx-ha03.web.de -port 25

ওয়েব.ডি সার্ভারের শংসাপত্রটি ডিউশ টেলিকোম সিএ দ্বারা প্রত্যয়িত হয়, তুরস্ক্রাস্ট নয়, সুতরাং উপরের কমান্ডটি ব্যর্থ হওয়া উচিত, তাই না?

তবে এটি রিপোর্ট করেছে:

    Verify return code: 0 (ok)

কেন?

আমার অর্থ একটি এনালগ গুনটস-ক্লাইম কমান্ড প্রত্যাশা অনুযায়ী ব্যর্থ হয়েছে:

$ { echo -e 'ehlo example.org\nstarttls' ; sleep 1 } | \
   gnutls-cli --starttls --crlf \
   --x509cafile /etc/ssl/certs/TURKTRUST_Certificate_Services_Provider_Root_1.pem \
   --port 25 mx-ha03.web.de
[..]
*** Verifying server certificate failed...

একটি ক্রসচেক করা, অর্থাত --x509cafile /etc/ssl/certs/ca-certificates.crtগুনটস-ক্লিমে পরিবর্তে ব্যবহার করে আমি পাই:

[..]
- The hostname in the certificate matches 'mx-ha03.web.de'.
- Peer's certificate is trusted

(যা প্রত্যাশিত)

সিএ-শংসাপত্রের জন্য ওপেনএসএল এস_স্লিভেন্ট প্রিন্টস

    Verify return code: 0 (ok)

TURKTRUST হিসাবে একই ফলাফল ...

প্রথমে আমি ওপেনসেলটিকে ডিফল্ট সেটিং -CApath(যেমন / ইত্যাদি / এসএসএল / সার্টি) ব্যবহার করে সন্দেহ করেছি - তবে আমি যখন straceপ্রক্রিয়া করি তখন আমি কেবলমাত্র openআর্গুমেন্টের জন্য সিস্কেলটি দেখি CAfile

(সমস্ত পরীক্ষাগুলি একটি উবুন্টু 10.04 সার্ভারে সম্পন্ন হয়েছে)

আপডেট: আমি টার্কট্রুস্ট শংসাপত্রটি একটি ফেডোরা 20 সিস্টেমে অনুলিপি করেছি এবং প্রথম ওপেনসেল বিবৃতি কার্যকর করেছি - সেখানে আমি আলাদা ফলাফল পেয়েছি:

Verify return code: 19 (self signed certificate in certificate chain)

উত্তর:


10

এটা পরিনত হয় যে openssl s_clientউবুন্টু 10.04 এখনও সিস্টেম ইনস্টল সার্টিফিকেট জন্য একটি ডিফল্ট অবস্থান জিজ্ঞাস্য, এমনকি যদি -CApath এবং -CAfile নিদিষ্ট করা হয়:

8466  open("/usr/lib/ssl/certs/4e18c148.0", O_RDONLY) = 4

(স্ট্রেস আউটপুট)

কোথায়:

$ ls -l /usr/lib/ssl/certs/4e18c148.0
lrwxrwxrwx 1 root root 30 2014-04-11 21:50 /usr/lib/ssl/certs/4e18c148.0 ->
    Deutsche_Telekom_Root_CA_2.pem

ডিরেক্টরি /usr/lib/ssl/certsকরার জন্য একটি সিমবলিক লিঙ্ক হয় /etc/ssl/certsউবুন্টু 10.04 তে, এইভাবে openstrace, লগ থেকে লাইন জন্য grepping নির্বাচন না করা '/ ইত্যাদি / SSL' ...

সূত্র

OpenSSL-0.9.8k এ খুঁজছি, এই সমস্যাটি অবস্থিত উৎস crypto/x509/by_dir.c, dir_ctrl():

dir=(char *)Getenv(X509_get_default_cert_dir_env());
if (dir)
    ret=add_cert_dir(ld,dir,X509_FILETYPE_PEM);
else
    ret=add_cert_dir(ld,X509_get_default_cert_dir(),
                     X509_FILETYPE_PEM);

যেখানে X509_get_default_cert_dirফিরে /usr/lib/ssl/certsএবং X509_get_default_cert_dir_envফিরে SSL_CERT_DIR

কার্যসংক্রান্ত

সুতরাং, কেউ প্রত্যাশিত আচরণ পেতে উবুন্টু 10.04 / ওপেনসেল 0.9.8k এর অধীনে নিম্নলিখিত কাজগুলি ব্যবহার করতে পারেন:

$ SSL_CERT_DIR="" openssl s_client -crlf -verify 9 \
    -CAfile /etc/ssl/certs/TURKTRUST_Certificate_Services_Provider_Root_1.crt \
    -starttls smtp -host mx-ha03.web.de -port 25

এবং যাচাইকরণ ব্যর্থ:

Verify return code: 19 (self signed certificate in certificate chain)

বর্তমান পরিস্থিতি

এটি উবুন্টু ইস্যু। উদাহরণস্বরূপ, ফেডোরা 20-এর ওপেনসেল 1.0.1e বা ফেডোরা 29 এর ওপেনসেল 1.1.1 সহ, এই কাজের প্রয়োজন নেই, কারণ ইস্যুটি পুনরুত্পাদন করা যায় না। এর অর্থ , ফেডোরা সিস্টেমে ডিরেক্টরি অনুসন্ধান তালিকায় কোনও ডিফল্ট শংসাপত্র সিস্টেম ডিরেক্টরি যুক্ত করা হয় না -CAfileবা যেমন কোনও বিকল্প নির্দিষ্ট -CApathকরার সময়।

ওপেনসেল ১.০.২ জি সহ উবুন্টু ১ On-তে এখনও সমস্যাটি রয়েছে।

এটি ওপেনসেল -১.০.২ কে -১ with সহ সেন্টোস on এ উপস্থিত রয়েছে - এবং দুর্ভাগ্যক্রমে, উপরোক্ত কাজটি সেখানে সহায়তা করে না এবং অজানা / অপ্রত্যাশিত টিএলএস প্যাকেটের ধরণের কারণে গাঁটস -৩.৩.২৯-৮ ব্যর্থ হয়েছে।


আমার সংস্করণ 1.0.2g আছে এবং এটিতে এখনও এই বাগ রয়েছে। জিনিসগুলি আরও খারাপ করতে, -verify_return_error পতাকাটির যাবতীয় প্রভাব নেই এবং সার্টিফিকেটটি ভুল হলেও টিএলএস সংযোগটি এগিয়ে চলে।
তাকুমার

@ টাকুমার, আমি ওবুন্টু ১ under-এর অধীনে ওপেনসেল ১.০.২ জি -১ ইউবন্টু ৪.১৪ সহ এটি পুনরায় পরীক্ষা করেছি এবং আমি নিশ্চিত করতে পারি যে এই ওপেনসেল পরীক্ষাটি এখনও ব্যর্থ হয়েছে। তবে কমপক্ষে ওয়ার্কআরউন্ডের সাথে আমি প্রত্যাশিত ত্রুটি বার্তাটি পেয়েছি - এবং -verify_return_errorওয়ার্কারআউন্ডের সাথে এবং কমান্ডটি প্রস্থান স্থিতির সাথে সমাপ্ত হয়। ফেডোরা ২৯ এবং ওপেনসেল -১.১.১-৩.ফসি29.x86_64 সহ এখনও সমস্ত কিছু প্রত্যাশিত হিসাবে কাজ করে প্রয়োজনীয় নয়
maxschlepzig

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