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


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.