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
এখনও না, যদিও। কেন হবে?