ওপেনএসএসএল শংসাপত্র ফোল্ডারে সিএ বাছাই করছে না


9

curlএইচটিটিপিএস সার্ভারের সাথে সংযোগ না দেওয়ার ক্ষেত্রে আমাদের সমস্যা হচ্ছে :

$ curl https://the-problem-site.com    (not the real URL!)   
curl: (35) error:14077458:SSL routines:SSL23_GET_SERVER_HELLO:reason(1112)

1112 হল SSL_R_TLSV1_UNRECOGNIZED_NAMEমধ্যে ssl.h

আমি যদি openssl s_client -connect the-problem-site.com:443পরিবর্তে চেষ্টা করি তবে আমি দেখতে পাচ্ছি

CONNECTED(00000003)   
depth=1 /C=US/O=GeoTrust, Inc./CN=GeoTrust SSL CA   
verify error:num=20:unable to get local issuer certificate   
verify return:0   

Certificate chain   
0 s:/serialNumber=xx/C=xx/ST=xx/L=xxxx/O=xx/OU=xx/CN=the-problem-site.com   
i:/C=US/O=GeoTrust, Inc./CN=GeoTrust SSL CA   
1 s:/C=US/O=GeoTrust, Inc./CN=GeoTrust SSL CA   
i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA   

অর্থাত্ সমস্যাটি দেখে মনে হচ্ছে এটি বিশ্বাস করে না /C=US/O=GeoTrust Inc./CN=GeoTrust Global CA। তবে সেই সার্টিটি ইনস্টল করা আছে: এটি /etc/ssl/certs/GeoTrust_Global_CA.pemএবং এর পরিবর্তে আমি চালিত

ওপেনএসএল এস_ক্লিয়েন্ট -ডোন-প্রব্লেম-সাইট ডটকম -৪৪৪৪ -এফাইলে / এসটিসি / এসএসএল / স্পার্টস / জিও ট্রাস্ট_ গ্লোবাল_সিএ.পিএম

তারপরে সবকিছু কাজ করে। শংসাপত্রটি হ্যাশ-নামক ফাইল হিসাবে উপস্থিত b0f3e76e.0এবং এটি এতে রয়েছে ca-certificates.crt। তবে যতদূর আমি দেখতে পাচ্ছি, কার্ল বা ওপেনসেল উভয়ই কোনও শংসাপত্র পড়ার চেষ্টা করছে না; আমি যদি straceসেগুলি করি তবে ত্রুটি নিয়েও নয় /usr/lib/ssl/certsবা পড়ার কোনও চেষ্টা নেই /etc/ssl/certs। এটি ওপেনসেল.সিএনএফ পড়তে পারে। আমরা দৌড়েছি update-ca-certificates

ওপেনসেল 0.9.8k সহ এটি উবুন্টু 10.04। আমরা দুটি পৃথক ইনস্টলের ক্ষেত্রে সমস্যাটি পুনরুত্পাদন করতে পারি (যদিও এটির দিক থেকে ফিরে আসা থেকে অন্যের ক্লোনটি সম্ভব)। যদি আমি ওপেনসেল 0.9.8e দিয়ে সেন্টোস ভিএম-তে একই পরীক্ষা করে দেখি তবে এটি দুর্দান্ত কাজ করে, এবং আমি এটিতে শংসাপত্রের ফাইলটি পড়তে দেখতে পাই strace। উবুন্টু স্ট্রেসে একই পয়েন্টে কোনও সমতুল্য ফাইল অ্যাক্সেস নেই। আমি যদি openssl.cnfসেন্টস ভিএম থেকে উবুন্টু মেশিনে ফাইলটি অনুলিপি করি তবে এতে কোনও পার্থক্য নেই। পরিবেশে বা একটি .rc ফাইলের মধ্যে সুস্পষ্ট কিছুই নেই যা এটির কারণ হতে পারে।

কোন ধারণা আমি কি ভুল করছি? এই কাজটি করা উচিত, যেমন কমান্ড-লাইন থেকে ওপেনসেল এবং কার্ল ইনস্টল করা সিএগুলি স্বয়ংক্রিয়ভাবে নেওয়া উচিত? এটি কীভাবে কনফিগার করা হয়? ধন্যবাদ!


অন্য ডেটা পয়েন্ট: 13 সার্ভারের একটি পরিষ্কার ইনস্টল এ, curlশংসাপত্রগুলির ফাইলটি বাছাই করে কাজ করে। openssl s_clientএখনও না, যদিও। কেন হবে?


আমরা ঠিক একই সমস্যাটি অনুভব করছি। আমি ওপেনসেলে কিছু কৌতুক অনুভূতি করছি!
milosgajdos

@ রুপ আপনি কি এর সমাধান খুঁজে পেয়েছেন? দয়া করে একটি উত্তর যুক্ত করুন এবং চিহ্নিত করুন। আমরা এই একই আচরণ দেখছি।
মাইক এস

@ মাইকস যতদূর আমি দুঃখিত জানি না তবে আমি সেই দলে নেই। আমি আগামীকাল তাদের জিজ্ঞাসা করব।
রুপ করুন

উত্তর:


4

আপনার সিস্টেমে বেশ কয়েকটি ক্রিপ্টোগ্রাফিক গ্রন্থাগার রয়েছে:

  • ওপেনএসএসএল (সোনার স্ট্যান্ডার্ড, একটি BSD- স্টাইলের (খুব বিনামূল্যে) লাইসেন্সের সাথে কিছুটা সমস্যাযুক্ত ধারা রয়েছে (জিপিএল সামঞ্জস্যতা রোধ করা, তবে "খারাপ" কিছুই নয়) এটি GNU বিশ্বে এর গ্রহণকে সীমাবদ্ধ করে)
  • GnuTLS (এফএসএফ থেকে প্রতিস্থাপন; দুটি স্বাদে আসে, এলজিপিএলভি 2-লাইসেন্সযুক্ত (তবে অবিস্মরণীয়) এবং এলজিপিএলভি 3-লাইসেন্সযুক্ত (এবং এইভাবে জিপিএলভি 2-কেবলমাত্র প্রোগ্রামগুলির সাথে বেমানান নয়); icallyতিহাসিকভাবে ওপেনএসএসএল হিসাবে বৈশিষ্ট্যযুক্ত নয়, কিছুটা বগি, তবে আরও কঠোর এছাড়াও, যা সুরক্ষা বাড়ায়)
  • এনএসএস (নেটস্কেপ / মজিলার লাইব্রেরি বাইরে খুব কমই ব্যবহৃত হয়; নতুন স্ট্যান্ডার্ড গ্রহণে ধীর)
  • পোলারএসএসএল, ম্যাট্রিক্সএসএল, ন্যাকএল / সল্টের মতো নাবালিকাগুলি

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

সিআরএলও তিনটি বড় ক্রিপ্টো লাইব্রেরির মধ্যে একটির ব্যবহার করে সমর্থনকারী প্রকল্পগুলির মধ্যে একটি। এটি বেশিরভাগ কারণ হ'ল সিআরএল, প্রাথমিক, একটি লাইব্রেরি যাতে অন্য প্রোগ্রামগুলি ব্যবহার করতে চায় যখন তারা http, ftp ইত্যাদি সংযোগ ব্যবহার করে জিনিসগুলি ডাউনলোড করতে (বা এমনকি আপলোড করতে) চায়। curlকমান্ড-লাইন থেকে এই রূপের উভয় থেকে আসতে পারে।

এখন, আমি মোটামুটি নিশ্চিত যে আপনি সদ্য-ইনস্টল হওয়া সিস্টেমের সাথে যে সমস্যাটি দেখছেন তা নিম্নলিখিত:

ওপেনএসএসএল এবং গনুটিএলএস উভয়ই /etc/ssl/certs/<hash>.<number>স্টাইল CA ডিরেক্টরি ব্যবহার করে সমর্থন করে । ওপেনএসএসএল সংস্করণ 0.x এবং জ্ঞানটিএলএস ওপেনএসএসএল সংস্করণ 1.x ব্যবহারের তুলনায় উল্লিখিত হ্যাশ গণনা করার জন্য একটি পৃথক অ্যালগরিদম ব্যবহার করে। (উভয়ই একটি সিস্টেমে একযোগে থাকতে পারে; বিভিন্ন শংসাপত্রগুলির মধ্যে যদি একই হ্যাশ থাকে তবে আপনি কেবল তাদের জন্য পৃথক নম্বর ব্যবহার করেন But তবে কোনও কারণে, দেবিয়ান / উবুন্টুর ca-certificatesপ্যাকেজটি এটি করে বলে মনে হয় না)) অতিরিক্তভাবে, গনুটিএলএস-এর কিছু সংস্করণ হয়নি ডিরেক্টরি ব্যবহার করে সমর্থন করে তবে কেবল একটি ফাইল ব্যবহার করে /etc/ssl/certs/ca-certificates.crt(যা সাধারণত ca-certificatesপ্যাকেজের রক্ষণাবেক্ষণকারী স্ক্রিপ্টগুলি দ্বারা পরিচালিত হয় তবে বিচ্যুত করতে পারে); আপনি মনে হয় কোনও পুরানো সংস্করণ ব্যবহার করছেন, সুতরাং এটি হিট জিনিস হতে পারে।

openssl s_clientডিফল্টরূপে (অর্থাত্ বিকল্প -CApathবা -CAfileবিকল্প ছাড়া ) শংসাপত্রগুলির জন্য কোথাও সন্ধান করে না ।

তোমার curlআপগ্রেড ইনস্টলেশন থেকে সম্ভবত তুলনায় বিভিন্ন ক্রিপ্টো গ্রন্থাগার ব্যবহার curlতাজা ইনস্টলেশন থেকে।

পুরানো GnuTLS সংস্করণগুলির আচরণ অনুকরণ openssl s_client -CAfile /etc/ssl/certs/ca-certificates.crt -connect the-problem-site.com:443করার পাশাপাশি চেষ্টা করুন openssl s_client -CApath /etc/ssl/certs -connect the-problem-site.com:443

আপনার সিস্টেমে কোথাও একটি ওপেনএসএসএল 1.x আছে কিনা ডাবল-পরীক্ষা করুন (উবুন্টু এমনকি এলটিএস সংস্করণগুলিতে বড় আপডেটগুলি স্নেক করার জন্য পরিচিত), এবং যদি হ্যাঁ তবে ফাইলটির হ্যাশটি পরীক্ষা করুন:

openssl x509 -noout -hash -in /etc/ssl/certs/GeoTrust_Global_CA.pem
openssl x509 -noout -subject_hash_old -in /etc/ssl/certs/GeoTrust_Global_CA.pem
openssl x509 -noout -subject_hash -in /etc/ssl/certs/GeoTrust_Global_CA.pem

সাধারণত, হয়, দ্বিতীয় এবং তৃতীয় কমান্ড ব্যর্থ হওয়া উচিত (ওপেনএসএসএল 0.x), অথবা প্রথম এবং তৃতীয় কমান্ড একই হ্যাশ প্রদর্শিত হবে কিন্তু দ্বিতীয়টি একটি পৃথক হ্যাশ (ওপেনএসএসএল 1.x) প্রদর্শন করবে। GnuTLS দ্বিতীয় কমান্ড থেকে আউটপুট ব্যবহার করবে (যদি ওপেনএসএসএল 1.x ইনস্টল করা থাকে); যদি ওপেনএসএসএল 0.x ইনস্টল করা থাকে তবে এটি একই হ্যাশ। আপনি ম্যানুয়ালি এই জাতীয় সিমলিংক তৈরি করতে পারেন।

একবার আপনি ডিবাগিং প্রতিক্রিয়া সরবরাহ করলে আমি এই পোস্টিংটি আপডেট করতে পারি।

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