আত্ম স্বাক্ষরিত শংসাপত্র বিশ্বস্ত নয়


1

আমি আমার নিজের CA তৈরি করেছি:

openssl genrsa -out private/rootCA.key 2048
openssl req -batch -new -x509 -nodes -key private/rootCA.key -sha256 -days 1024 -config ./openssl.conf -out certs/rootCA.pem

আমি আমার সাইটের জন্য একটি শংসাপত্র তৈরি করেছি:

openssl genrsa -out private/$domain.key 2048
openssl req -batch -new -key private/$domain.key -config ./openssl.conf -subj "/commonName=$domain" -out csr/$domain.csr
openssl x509 -req -in csr/$domain.csr -CA certs/rootCA.pem -CAkey private/rootCA.key -CAcreateserial -out certs/$domain.crt -days 500 -sha256

আমি সাইট সার্ট এবং রুট সার্টে একটি বান্ডিলের সাথে যোগদান করি:

cat certs/$domain.crt certs/rootCA.pem > bundles/$domain.bundle.crt

আমি nginx কনফিগারেশন dir এ সার্টিফিকেট / কী কপি করি:

cp bundles/$domain.bundle.crt private/$domain.key /etc/nginx/conf/certs

আমি নিশ্চিত যে nginx আমার সাইটের জন্য যারা শার্ট ব্যবহার করে:

    ssl_certificate /etc/nginx/certs/mysite.bundle.crt;
    ssl_certificate_key /etc/nginx/certs/mysite.key;

আমি nginx পুনরায় আরম্ভ করুন।

আমি আমার সিস্টেমে রুট সার্ট ইনস্টল করি:

sudo cp certs/rootCA.pem /usr/local/share/ca-certificates/myrootCA.crt
sudo update-ca-certificates

আমি সঙ্গে যাচাই httpie:

»Http HTTPS: // mysite

http: error: SSLError: HTTPSConnectionPool(host='mysite', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'ssl3_get_server_certificate', 'certificate verify failed')],)",),))

আমি সঙ্গে যাচাই openssl (এটি CA- সার্টিফিকেট dir ব্যবহার করার জন্য বলছে, এটি ডিফল্টরূপে ব্যবহৃত হয় না বলে মনে হয়):

openssl s_client -host mysite -port 443 -prexit -showcerts -CApath /usr/local/share/ca-certificates

যা দেয়:

Verify return code: 19 (self signed certificate in certificate chain)

এবং যাচাই সম্পূর্ণ না।

ক্রোমে সাইটটি খোলে আমাকে মানক ত্রুটি দেয়:

এই সার্ভার এটি মাইসাইট প্রমাণ করতে পারে না; তার নিরাপত্তা   শংসাপত্র আপনার কম্পিউটারের অপারেটিং সিস্টেমের দ্বারা বিশ্বস্ত নয়। এই   একটি ভুল কনফিগারেশন বা আপনার আক্রমণকারী একটি আক্রমণকারী দ্বারা সৃষ্ট হতে পারে   সংযোগ নেই।

আমার দুটি প্রশ্ন আছে:

  1. কেন রুট সার্টিফিকেট ইনস্টল করার পরে সিস্টেম বিশ্বস্ত, সিস্টেম প্রশস্ত হয়? ক্রোম সিস্টেম ওয়াইড cerficates ব্যবহার করছে, অধিকার?
  2. কেন open_ssl s_client সার্টিফিকেট যাচাই করতে সক্ষম না?

সম্পাদনা

কার্ল সিস্টেম-ওয়াইড ইনস্টল করা শংসাপত্রের সাথে কাজ করছে:

curl https://mysite

কেন কার্ল কাজ করছে এবং ক্রোম / httpie না?


ওয়েল আপনার সার্ট আসলে আসলে হোস্ট নাম ধারণ করে registry.dgvmetro? আপনি কি আপনার root সার্টিফিকেট যাচাই করেছেন v3_ca এক্সটেনশন বা অনুরূপ?
Seth

স্ব স্বাক্ষর সনদ বন্ধ, ব্যবহার করুন let's encrypt
Gilles Quenot

@ গিলসুইনট স্ব-স্বাক্ষরিত সার্টিফিকেটের সাথে একেবারেই কোনও ভুল নেই। নিচের লাইন, আসুন সার্টিফিকেট এনক্রিপ্ট করি, মূলত স্ব-স্বাক্ষরিত শংসাপত্রগুলি যে কোনওভাবে কিন্তু রুট অথরিটি সমস্ত ব্রাউজার দ্বারা বিশ্বস্ত।
Ramhound

উত্তর:


1

OpenSSL জন্য উবুন্টু update-ca-certificates তার মানুষের পাতা হিসাবে বর্ণনা করা হয়েছে সার্চ থেকে /usr/share/ca-certificates এবং /usr/local/share/ca-certificates কিন্তু সঙ্গে symlinks লিখেছেন subjhash.num নাম প্রয়োজন OpenSSL দ্বারা /etc/ssl/certs এবং একটি মিলিত ফাইল /etc/ssl/certs/ca-certificates.crt তাই পরবর্তী দুই সঙ্গে ব্যবহার করা উচিত -CApath এবং / অথবা -CAfile যথাক্রমে।

curl দৃশ্যত OpenSSL ডিফল্ট ব্যবহার করে, যা এই বিল্ড হয় /etc/ssl/certs/, তবে উবুন্টু নির্ভর করে, ওপেনএসএল কম বয়সী হতে পারে যা কম্যান্ডলাইনের বাগ থাকতে পারে s_client স্বয়ংক্রিয়ভাবে ডিফল্ট ব্যবহার করবেন না।

ক্রোম জন্য আমি সাহায্য করতে পারছি না; আমি উবুন্টুতে ক্রোম ব্যবহার করি না। অন্য কেউ করতে পারেন বাম সিডব্লিউ।

যদিও আপনি CA কে বিশ্বস্ত করার পরেও জানেন তবে সাম্প্রতিক Chrome আপনারও দরকার সার্ভার সার্টিফিকেট (PKI পদগুলিতে, শেষ সংস্থান = EE = CA নয়) সঠিক নাম (গুলি) সহ একটি SAN এক্সটেনশান (বিষয় অল্টারনেটিন নাম) আছে, যা অন্যরাও না (এখনকার জন্য) করে, এবং আপনি যদি / আপনি কিভাবে ওটা করেছিলাম. (প্রসারিত :) এইচটিটিপিএসের জন্য আরএফসি 2818 এবং CABforum মানগুলির এক দশকেরও বেশি সময় ধরে সার্ভার শার্টগুলির বৈধ SAN থাকতে হবে, এবং এখন সমস্ত বা প্রায় সমস্ত ক্লায়েন্ট ব্যবহার SAN উপস্থিত থাকলে, কিন্তু আমার জ্ঞান পর্যন্ত ক্রোম কেবলমাত্র ক্লায়েন্ট প্রয়োজন SAN উপস্থিত হতে হবে।


ই সার্ট মানে সহজ ইঞ্জিন ? আমি একটি স্ব উত্পন্ন CA এবং শংসাপত্র ব্যবহার করছি।
dangonfast

@ ডাঙ্গনফফ্ট: সম্পাদিত
dave_thompson_085

0

মনে হচ্ছে আমার স্ব-উত্পন্ন রুট CA ভুল ছিল। এটা অনুপস্থিত ছিল:

basicConstraints               = CA:TRUE

এই সমাধান করার পরে, httpie সঠিকভাবে আচরণ করা হয়। এটা অদ্ভুত যে curl এই সম্পর্কে অভিযোগ ছিল না।

এটি এখনও Chrome এর সমস্যাটি সমাধান করছে না ... আমি মনে করি যে Chrome সিস্টেম-ভিত্তিক CA ব্যবহার করে না।


ক্রোম সাধারণত প্ল্যাটফর্মের ট্রাস্টস্টোর ব্যবহার করতে হবে - তবে PEM- বিন্যাসটি অপরিহার্য নয়। (আমি উইন্ডোজ এ এটি ব্যবহার করি এবং এটি অবশ্যই উইন্ডোজ স্টোর ব্যবহার করে। তাই আমি আমার উত্তরের সেই অংশটি খোলা রেখেছি।)
dave_thompson_085

"আমি অনুমান করি যে Chrome সিস্টেম-ভিত্তিক CA ব্যবহার করে না।" - আপনি ভুল হয়ে যাবেন। ক্রোম OS এবং / অথবা ব্যবহারকারীর শংসাপত্রের দোকানকে বিশ্বাস করে। যেহেতু আপনি আপনার আসল সমস্যাটি সমাধান করেছেন তাই আপনার অতিরিক্ত প্রশ্নটি সরাতে এবং এটির উত্তর পেতে ভিন্ন প্রশ্ন জমা দিতে পারে। তথ্য বিচ্ছিন্ন করতে ভুলবেন না, আমাদের সবকিছুর দরকার নেই, আমরা মূল সমস্যাটির জন্য প্রয়োজন
Ramhound

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