সতর্কতা কি "SSL3_READ_BYTES: sslv3 সতর্কতা খারাপ শংসাপত্র" ইঙ্গিত দেয় যে এসএসএল ব্যর্থ হয়েছে


17

নীচের কমান্ডটি চালনার সময় ওপেনএসএল এস_স্লিয়েন্ট -হোস্ট উদাহরণ.অ্যাক্সিজ -পোর্ট 9093

আমি নিম্নলিখিত ত্রুটি পেয়েছি:

139810559764296:error:14094412:SSL routines:SSL3_READ_BYTES:sslv3 alert bad certificate:s3_pkt.c:1259:SSL alert number 42
39810559764296:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:184:

তবে শেষে আমি "Verify return code: 0 (ok)"বার্তাটি পাই ।

আমার প্রশ্নটি হ'ল উপরের সতর্কতাটি কী বোঝায় এবং যদি এসএসএল আসলে সফল হয়। অগ্রিম সহায়তার জন্য অনেক ধন্যবাদ।

SSL handshake has read 6648 bytes and written 354 bytes
New, TLSv1/SSLv3, Cipher is AES128-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol  : TLSv1.2
Cipher    : AES128-SHA
Session-ID: xx
Session-ID-ctx:
Master-Key: xx
Key-Arg   : None
Krb5 Principal: None
PSK identity: None
PSK identity hint: None
Start Time: 1475096098
Timeout   : 300 (sec)
**Verify return code: 0 (ok)**

উত্তর:


25

"হ্যান্ডশেক ব্যর্থতা" মানে হ্যান্ডশেক ব্যর্থ হয়েছে এবং কোনও এসএসএল / টিএলএস সংযোগ নেই। আপনার দেখতে হবে যে 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

হাই ডেভ; নীচে আমরা অনুসরণ করা পদ্ধতি অনুসরণ করা হয়। 1: মূল স্টোরটিতে মূল সিএ এবং মধ্যবর্তী সার্টিফিকেটগুলি আপলোড করুন। 2: স্বাক্ষরিত কমডো শংসাপত্রটি কীস্টোরে আপলোড করুন। 3: রুট সিএ এবং মধ্যবর্তী শংসাপত্রগুলি ট্রস্টস্টোরে আপলোড করুন। 4: ক্লাস্টারের প্রতিটি নোডে (ক্যাসান্দ্রা) কীস্টোর এবং ট্রাস্টোর ফাইলগুলি অনুলিপি করুন। নোডগুলি যোগাযোগের জন্য এসএসএল ব্যবহার করে এবং এগুলি কোনও সমস্যা ছাড়াই ডেটা বহির্গমন বলে মনে হয়। তবে আমি উপরে উল্লিখিত এসএসএল কমান্ডটি চালানোর সময় সমস্যাটি ওঠে।
kris433

@ ক্রিস ৪৩৩: কী কী স্টোর তা? আপনি যে পদ্ধতিটি জাভাটির মতো বর্ণনা করেছেন তা যদি (এবং কেবলমাত্র) এটি ইতিমধ্যে একটি প্রাইভেটকি তৈরি করেছে যার জন্য আপনি 'স্বাক্ষরিত কমডো সার্ট' পেয়েছেন, যদিও আপনি যদি কোনও মানক জাভা ইনস্টল ব্যবহার করেন তবে এটির একটি ডিফল্ট রয়েছে ট্রস্টস্টোরটিতে কমোডো অন্তর্ভুক্ত রয়েছে, সুতরাং আপনার এটি পরিবর্তন করার দরকার নেই। ওপেনএসএসএল কোনও জাভা কীস্টোর বা ট্রস্টস্টোর ব্যবহার করে না এবং ডিফল্টরূপে এটি কোনও কীস্টোর মোটেই ব্যবহার করে না, এজন্য আপনাকে -cert [-key] দিয়ে ফাইলগুলি নির্দিষ্ট করতে হবে। আমি যদি আপনার মন্তব্যের সঠিক ব্যাখ্যা করে থাকি তবে সম্পাদনা দেখুন।
dave_thompson_085

অনেক ধন্যবাদ ডেভ এটি পুরোপুরি কাজ করে। আপনি আমার সপ্তাহ বাঁচিয়েছেন। আপনি যদি কখনও ফিলাডেলফিয়ায় আসেন তবে পনির-স্টেক এবং জেলাতো আমার উপর রয়েছে;)। আবার আপনাকে ধন্যবাদ.
kris433

@ ক্রিস ৪৩৩: আপনাকে স্বাগতম, তবে স্ট্যাক এক্সচেঞ্জের অফিশিয়াল ওয়ে হ'ল চেকমার্কটি ব্যবহার করে একটি সহায়ক উত্তর গ্রহণ করা, যাতে সিস্টেম অন্যান্য তথ্যগুলির কাছে ফলাফল প্রদর্শন করতে স্বয়ংক্রিয়ভাবে এই তথ্য ব্যবহার করতে পারে ; আপনি যখন এই সাইটে এসেছিলেন তখন আপনার যে 'সফর' দেখার কথা ছিল, বা আরও সুনির্দিষ্টভাবে সার্ফারফল্ট /help/someone-answers দেখুন
dave_thompson_085

0

আমার ক্ষেত্রে যখন ব্যক্তিগত কীটি শংসাপত্রের সাথে মেলে না তখন আমি এই ত্রুটিটি পেয়েছি। আমার মেয়াদ শেষ হয়ে গেলে এবং নতুন একটি ব্যক্তিগত কী তৈরি করার প্রয়োজন হলে আমি শংসাপত্রটি আপডেট করেছি। যাইহোক, আমি আমার অ্যাপ্লিকেশন এ উল্লেখ করতে ভুলে গেছি। যখন আমি নতুন ব্যক্তিগত কীটির দিকে ইঙ্গিত করলাম - এই ত্রুটিটি চলে গেছে।

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