"হ্যান্ডশেক ব্যর্থতা" মানে হ্যান্ডশেক ব্যর্থ হয়েছে এবং কোনও এসএসএল / টিএলএস সংযোগ নেই। আপনার দেখতে হবে যে openssl
শেলটি (বা সিএমডি ইত্যাদি) এ প্রস্থান করে এবং সার্ভারে ইনপুট ডেটা প্রেরণের জন্য অপেক্ষা না করে। "রিটার্ন কোড 0 যাচাই করুন" এর অর্থ হ'ল সার্ভারের শংসাপত্রে কোনও সমস্যা পাওয়া যায়নি , এটি একেবারেই চেক করা হয়নি বা এটি যাচাই করা হয়েছিল এবং ভাল ছিল (যতক্ষণ না ওপেনএসএসএল এর চেকগুলি যায়, যা সমস্ত কিছু আবরণ করে না); এই ক্ষেত্রে প্রোটোকলটি জেনে আমরা পরবর্তী কেস প্রয়োগ করতে পারি uce
সতর্কতাbad certificate
(কোড 42) পাওয়ার অর্থ সার্ভারটি আপনাকে একটি শংসাপত্র দিয়ে প্রমাণীকরণের দাবি করে এবং আপনি এটি করেন নি এবং এটি হ্যান্ডশেক ব্যর্থতার কারণ হয়ে দাঁড়িয়েছে। লাইনের কয়েক লাইনের আগে SSL handshake has read ... and written ...
আপনাকে একটি লাইন দেখতে হবে যা Acceptable client certificate CA names
সাধারণত সিএ সনাক্তকারী বেশ কয়েকটি লাইন পরে একটি লাইন শুরু হয় Client Certificate Types
এবং সম্ভবত Requested Signature Algorithms
আপনার ওপেনএসএসএল সংস্করণ এবং আলোচ্য প্রোটোকলের উপর নির্ভর করে।
'গ্রহণযোগ্য' তালিকায় কোনও সিএ দ্বারা জারি করা শংসাপত্রটি সন্ধান করুন, বা এটি কোনও সিএ নির্ভর করে বা সার্ভার অপারেটর বা মালিকদের সাথে যোগাযোগ করুন এবং তাদের জিজ্ঞাসা করুন, প্লাস মিলে যাওয়া ব্যক্তিগত কী , উভয়ই সার্ভারের উপর বা তার সম্পর্কে নথির জন্য খালি চেহারা ছিল look পিইএম ফর্ম্যাটে এবং সেগুলি দিয়ে নির্দিষ্ট করুন-cert $file -key $file
; আপনার যদি উভয়ই একটি ফাইলে থাকে, যেমন পিইএম দিয়ে সম্ভব, কেবল ব্যবহার করুন-cert $file
। আপনার যদি সেগুলি অন্য কোনও ফর্ম্যাটে থাকে তবে তা উল্লেখ করুন বা এখানে অনুসন্ধান করুন এবং সম্ভবত সুপারভাইজার এবং সুরক্ষা S এসএক্স; বিভিন্ন শংসাপত্র এবং প্রাইভেটকি ফর্ম্যাটগুলি রূপান্তর করার বিষয়ে ইতিমধ্যে অনেকগুলি প্রশ্নোত্তর রয়েছে। যদি আপনার শংসাপত্রের একটি "চেইন" বা "ইন্টারমিডিয়েট" শংসাপত্রের (বা একাধিক) যাচাই করা দরকার হয়, যেমন সার্ভারটি কীভাবে কনফিগার করা হয় তার উপর নির্ভর করে প্রায়শই কোনও পাবলিক সিএর (বনাম কোনও আন্ডার হাউস) প্রাপ্ত সার্টের ক্ষেত্রে হয়, s_client
একটি কৌশল প্রয়োজন: হয় আপনার সিস্টেম ট্রস্টস্টোরে চেইন শংসাপত্র (গুলি) যুক্ত করুন, বা সিএ সার্ট (গুলি) সমেত একটি স্থানীয় / অস্থায়ী ট্রাস্টস্টোর তৈরি করুন যা আপনাকে প্রেরণ করতে হবে সেই সার্ভারটি PLUS চেইন সার্টিটি (গুলি) যাচাই করতে হবে।
আপনার যদি এ জাতীয় শংসাপত্র না থাকে তবে আপনার একটি পেতে হবে, যা একটি পৃথক প্রশ্ন যার উত্তর দেওয়ার জন্য আরও অনেক বিশদ প্রয়োজন, বা আপনাকে শংসাপত্রের প্রমাণীকরণ ব্যবহার না করেই সার্ভারের সাথে সংযোগ করার উপায় খুঁজে বের করতে হবে; আবার ডকুমেন্টেশন চেক করুন এবং / অথবা অপারেটর / মালিকদের জিজ্ঞাসা করুন।
সম্পাদনা: এটি জাভাতে আপনার ক্লায়েন্ট কী এবং সার্ট চেইনের পাশাপাশি সার্ভার অ্যাঙ্কর (গুলি) থাকতে পারে এমন মন্তব্য থেকে প্রতীয়মান হয়। চেক করার সময় আমি একটি ভাল বিদ্যমান উত্তর পুরোপুরি case কেসটি কভার করে দেখতে পাচ্ছি না, যদিও এটি সম্ভবত ভালভাবে অনুসন্ধান করবে না:
# Assume Java keystore is type JKS (the default but not only possibility)
# named key.jks and the privatekey entry is named mykey (ditto)
# and the verify certs are in trust.jks in entries named trust1 trust2 etc.
# convert Java key entry to PKCS12 then PKCS12 to PEM files
keytool -importkeystore -srckeystore key.jks -destkeystore key.p12 -deststoretype pkcs12 -srcalias mykey
openssl pkcs12 -in key.p12 -nocerts -out key.pem
openssl pkcs12 -in key.p12 -nokeys -clcerts -out cert.pem
openssl pkcs12 -in key.p12 -nokeys -cacerts -out chain.pem
# extract verify certs to individual PEM files
# (or if you 'uploaded' PEM files and still have them just use those)
keytool -keystore trust.jks -export -alias trust1 -rfc -file trust1.pem
keytool -keystore trust.jks -export -alias trust2 -rfc -file trust2.pem
... more if needed ...
# combine for s_client
cat chain.pem trust*.pem >combined.pem
openssl s_client -connect host:port -key key.pem -cert cert.pem -CAfile combined.pem