এসএসএল শংসাপত্র ত্রুটি: ত্রুটি যাচাই করুন: num = 20: স্থানীয় ইস্যুকারী শংসাপত্র পেতে অক্ষম


11

আমি কাজ করার জন্য একটি এলডিএপিএস সার্ভারের সাথে একটি এসএসএল সংযোগ পেতে চেষ্টা করেছি (অ্যাক্টিভ ডিরেক্টরি), তবে সমস্যা বজায় রাখি। আমি এটি ব্যবহার করার চেষ্টা করেছি:

openssl s_client -connect the.server.edu:3269 

নিম্নলিখিত ফলাফল সহ:

verify error:num=20:unable to get local issuer certificate 

আমি ভেবেছিলাম, ঠিক আছে, বেশ কয়েক বছরের পুরনো প্রোডাকশন সার্ভারটি সার্ভার। হয়তো সিএ উপস্থিত নেই। আমি তখন আউটপুট থেকে শংসাপত্রটি একটি পেম ফাইলের মধ্যে টানলাম এবং চেষ্টা করেছি:

openssl s_client -CAfile mycert.pem -connect the.server.edu:3269

এবং এটিও কাজ করে না।

আমি কী মিস করছি? সবসময় কাজ করা উচিত নয়?

ssl  openssl 

স্পষ্টতার স্বার্থে, এটি প্রদর্শিত হয় যে উইন্ডোজ থেকে পরিবেশন করা যখন এলডিএপিএস সংযোগ করা হয় তখন CA শংসাপত্র উপস্থাপন করে না। অতএব, আপনার সিএ এক্স.509 সার্টিফিকেট পাওয়া উচিত, বেস 64 হিসাবে রফতানি করা উচিত এবং নীচের উত্তরে বর্ণিত হিসাবে নির্ধারণ করা উচিত। আমার ক্ষেত্রে পাইথন-এলডিএপ ব্যবহার করে আপনি এটিকে GLOBAL স্কোপে অর্পণ করেছেন (আপনার ldap.initialize নয়) (উদাহরণটি): এর ldap.set_option(ldap.OPT_X_TLS_CACERTFILE,'./ca_issuer_cert.pem') পরে, আমি প্রত্যাশা অনুযায়ী STARTTLS (এলডিএপি পোর্টের মধ্যে 389) ব্যবহার করতে সক্ষম হয়েছি।
mbrownnyc

উত্তর:


4

সুতরাং এটিই আমি সিএ সার্টের নাম হিসাবে দেখছি:

depth=1 /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=Terms of use at //www.verisign.com/rpa (c)10/CN=VeriSign Class 3 International Server CA - G3
verify error:num=20:unable to get local issuer certificate
verify return:0

উপরের আমার দ্বিতীয় চেষ্টাতে-শোকার্টগুলি করার পরে আমি যে শংসাপত্রটি আমদানি করেছিলাম তার নাম। আমি কীস্টোরে শংসাপত্রগুলি তালিকাভুক্ত করেছি:

$JAVA_HOME/bin/keytool -list -v -keystore $JAVA_HOME/jre/lib/security/cacerts

আমি সেখানে সিএ সার্টিফিকেটটি দেখছি।

Alias name: versign2006
Creation date: Jan 21, 2011
Entry type: trustedCertEntry

Owner: CN=VeriSign Class 3 International Server CA - G3, OU=Terms of use at www.verisign.com/rpa (c)10, OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US
Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G5, OU="(c) 2006 VeriSign, Inc. - For authorized use only", OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US
Serial number: 641be820ce020813f32d4d2d95d67e67
Valid from: Sun Feb 07 19:00:00 EST 2010 until: Fri Feb 07 18:59:59 EST 2020
Certificate fingerprints:
  MD5:  BA:B0:65:B4:3B:9C:E8:40:30:21:7D:C5:C6:CD:3F:EB
  SHA1: B1:8D:9D:19:56:69:BA:0F:78:29:51:75:66:C2:5F:42:2A:27:71:04

ওপেনসেল সার্ভারের সাথে যে কী-স্টোরটি ব্যবহার করছি তা নিশ্চিত করার জন্য, আমি-CAfile যুক্তিটি ব্যবহার করছি:

openssl s_client -connect the.server.edu:3269 -CAfile $JAVA_HOME/jre/lib/security/cacerts

সিএর জন্য জাভা কীস্টোরটির পাসওয়ার্ড রয়েছে তা জেনে আমি পাস-পাস: পাসওয়ার্ড বিকল্পটি এভাবে ব্যবহার করার চেষ্টা করেছি:

openssl s_client -connect the.server.edu:3269 -CAfile $JAVA_HOME/jre/lib/security/cacerts -pass pass:changeit

কিন্তু এটিও কার্যকর হয়নি।

এ সম্পর্কে মজার বিষয় হ'ল ক্যা্যাসার্টস ফাইলটির একটি পাসওয়ার্ড রয়েছে এবং ওপেনসেল অভিযোগ করছে না যে এটি ক্যাসর্ট ফাইলটি পড়তে পারে না। এটাই আমার কাছে মজাদার মনে হচ্ছে। এটি বা অন্য কিছু কি একটি ঘন্টা বাজায়?


3

এই ত্রুটিটি ওপেনসেলের বলার উপায়, "আমি কোনও শংসাপত্রের শৃঙ্খলা বিশ্বস্ত রুটে অনুসরণ করতে পারি না"। আমি ঠিক আমার নিজের এডি সার্ভারগুলিতে একই কমান্ডটি করেছি এবং আমি একটি সম্পূর্ণ শংসাপত্র পেয়েছি, তবে শীর্ষ শংসাপত্রটিতে সঠিক ত্রুটি রয়েছে। আপনার যদি সিএ-এর পাব-কী থাকে যা সেরিতে স্বাক্ষর করে আপনি এটি -CAfileবা -CApathবিকল্পগুলির সাথে উল্লেখ করতে পারেন


ঠিক আছে, প্রতিক্রিয়া জন্য ধন্যবাদ। তাই আমি চেষ্টা করেছিলাম। শশর্টস অপশনটি দিয়ে একই কাজটি করে সিএ সার্ট পেয়েছে, অন্য শংসাপত্রটি ধরেছে। এটি সিএ সার্ট হওয়া উচিত, তাই না? চেষ্টা করেছেন যে পেম ফাইলে সার্ভার শংসাপত্রের পরিবর্তে এবং একই ত্রুটি বার্তাটি পেয়েছে। অন্য কোন চিন্তা?

সেক্ষেত্রে সম্ভবত এটি মেয়াদ উত্তীর্ণ হওয়ার মতো অন্য কোনও কারণে যাচাইকরণ ব্যর্থ হচ্ছে prob
sysadmin1138

1

আমি কাজ করার জন্য একটি এলডিএপিএস সার্ভারের সাথে একটি এসএসএল সংযোগ পেতে চেষ্টা করেছি (অ্যাক্টিভ ডিরেক্টরি), তবে সমস্যা বজায় রাখি। আমি এটি ব্যবহার করার চেষ্টা করেছি:

আপনি যদি ওপেনলডিএপি ব্যবহার করছেন তবে আপনি সেট করতে পারেন:

TLS_REQCERT=never

আপনার openldap.confফাইলে, যা ওপেনলডিএপকে শংসাপত্র যাচাইয়ের চেষ্টা না করার নির্দেশ দেয়। আপনি যদি আপাচি দিয়ে এলডিএপ প্রমাণীকরণ করছেন তবে একই রকম বিকল্প রয়েছে।

আপনি যদি সত্যিই শংসাপত্র যাচাই করতে চান তবে নিম্নলিখিতগুলি সহায়তা করতে পারে:

আমি কী মিস করছি? সবসময় কাজ করা উচিত নয়?

আমি তাই মনে করি না. নিম্নলিখিতগুলি চূড়ান্ত মনে হলেও, এটি সত্যিই কেবল আমার সেরা অতিথি:

আপনি যা চেষ্টা করেছেন তা কেবল স্ব-স্বাক্ষরিত শংসাপত্রের জন্য কাজ করবে। কারণ শংসাপত্রটি আসলে উইন্ডোজ সিএ দ্বারা জারি করা হয়েছিল, -CAfileআপনাকে কিছু না পাওয়ার যুক্তি হিসাবে সার্ভার শংসাপত্রটি ব্যবহার করার চেষ্টা করেছিল ।

শশর্টস অপশনটি দিয়ে একই কাজটি করে সিএ সার্ট পেয়েছে, অন্য শংসাপত্রটি ধরেছে। এটি সিএ সার্ট হওয়া উচিত, তাই না?

অগত্যা, না। রিমোট সার্ভার তার আউটপুটে সিএ শংসাপত্র উপস্থাপন করে এমন কোনও গ্যারান্টি নেই। আপনাকে প্রথমে সার্ভার শংসাপত্রের জারিকারীর দিকে নজর দেওয়া দরকার:

openssl x509 -in server.crt -noout -text | grep Issuer

... এবং তারপরে দেখুন অন্য যে কোনও শংসাপত্রের সাথে তার ইস্যুকারীর মিল রয়েছে।

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