উবুন্টুতে এসএসএল শংসাপত্র এবং ব্যক্তিগত কীগুলির জন্য সেরা অবস্থান


62

উবুন্টুতে, দেখে মনে হচ্ছে যে কোনও ব্যক্তিগত কীটির শংসাপত্রে স্বাক্ষর করার জন্য ব্যবহৃত হয় (এনজিনেক্স দ্বারা ব্যবহারের জন্য) এতে রয়েছে /etc/ssl/private/

এই উত্তরটি যোগ করে যে শংসাপত্রটি প্রবেশ করা উচিত /etc/ssl/certs/তবে এটি নিরাপদ জায়গার মতো মনে হচ্ছে। কি .crtফাইলগুলি নিরাপদে রাখা প্রয়োজন বা তারা প্রকাশ্য বলে মনে করা হয়?


19
আপনি চাইলে .crtটাইমস স্কয়ার বিলবোর্ডে রাখতে পারেন।
ceejayoz

উত্তর:


48

.Crt ফাইলটি সংযুক্ত করে এমন সমস্ত কিছুতে প্রেরণ করা হয়; এটি প্রকাশ্য ( chown root:rootএবং chmod 644)

ব্যক্তিগত কী অবস্থান যুক্ত করতে; আপনি এটি যথাযথভাবে সুরক্ষিত করার পাশাপাশি এটি সেখানে রাখার বিষয়টি নিশ্চিত করুন। ( chown root:ssl-certএবং chmod 640)


আমি অবাক হই কেন সেই ডিরেক্টরিটি ডিফল্টরূপে g + s নয়।
কলিন অ্যান্ডারসন

2
এটি হওয়ার দরকার নেই; ডিরেক্টরিটি 0750, সুতরাং কোনও গ্রুপে নেই এমন কোনও ব্যবহারকারীর পক্ষে ফাইলটি পড়ার জন্য ডিরেক্টরিতে প্রবেশের উপায় নেই।
দোলা

2
দেখে মনে হচ্ছে ssl-cert উবুন্টুতে একটি অবৈধ গ্রুপের নাম। হতে পারে এটি
রুটটি ছেঁটে ফেলা

1
@ আতিফম এসএসএল-সার্টি সার্ট গ্রুপটি 16.04 বা 18.04 তে হয় চালু হয়েছিল either কোনটা মনে করতে পারছি না।
ডিলান ইয়ং

1
@ ডিলান ইয়ং: এটি নিশ্চিতভাবে উবুন্টু ১২.০৪-তে উপস্থিত রয়েছে এবং আমি বিশ্বাস করি এটি প্যাকেজটি তৈরি করেছে ssl-cert, সম্ভবত অন্য জিনিসগুলির মধ্যে স্ব-স্বাক্ষরযুক্ত
স্নোয়েল

35

আপনার ব্যক্তিগত কী ফাইল (গুলি) যথাযথভাবে সুরক্ষিত করার পরে আপনি এগুলি কোথায় রেখেছেন তা বিবেচ্য নয় । সার্বজনীন সার্টিফিকেট সর্বজনীন; কোন সুরক্ষা প্রয়োজন - সার্ভার সুবিধা বা অন্যথায়।

উত্তরে প্রসারিত করতে আমি ডিফল্ট অবস্থানটি ব্যবহার করি না /etc/ssl
ব্যাকআপ + অন্যান্য কারণে আমার সমস্ত আলাদা আলাদা জায়গায় রাখা আমার পক্ষে সহজ।

অ্যাপাচি এসএসএল-এর জন্য, আমি আমার /etc/apache2/ssl/privateবা অনুরূপ "মূল অঞ্চল" এ রাখি /etc/

উদাহরণস্বরূপ সেটআপ

এই পোস্টটি উবুন্টু (দেবিয়ান) + অ্যাপাচি, তবে বেশিরভাগ সিস্টেমে কাজ করা উচিত -
কেবল অনুমতিগুলি প্রয়োগ করুন এবং প্রদত্ত কনফিগারেশনে স্থান / পাথ আপডেট করুন (অ্যাপাচি / এনগিনেক্স / ইত্যাদি)।
যদি SSL কী ফাইলগুলি সঠিকভাবে (ডিরেক্টরি ও ফাইলগুলি) সুরক্ষিত থাকে তবে আপনি ভাল হয়ে যাবেন। নোট নোট!

ডিরেক্টরি তৈরি করুন:

sudo mkdir /etc/apache2/ssl
sudo mkdir /etc/apache2/ssl/private
sudo chmod 755 /etc/apache2/ssl
sudo chmod 710 /etc/apache2/ssl/private

দ্রষ্টব্য: উবুন্টুর অধীনে গোষ্ঠী
chmod 710সমর্থন করে ssl-cert
(মন্তব্য দেখুন)
অনুমতি সেটিং 700উপর /etc/apache2/ssl/privateএছাড়াও জরিমানা কাজ করবে।

এসএসএল ফাইলগুলি রাখুন:

পুট প্রাইভেট এসএসএল কী (গুলি) এর মধ্যে অন্তর্বর্তী সার্টিফিকেট সহ সর্বজনীন www এসএসএল শংসাপত্র (গুলি) /etc/apache2/ssl
রাখুন/etc/apache2/ssl/private

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

sudo chown -R root:root /etc/apache2/ssl/
sudo chown -R root:ssl-cert /etc/apache2/ssl/private/

দ্রষ্টব্য: আপনার
যদি এসএসএল-সার্ট গোষ্ঠী না থাকে তবে উপরের লাইনে কেবল 'রুট: রুট' ব্যবহার করুন বা ২ য় লাইনটি এড়িয়ে যান।

অনুমতি সেট করুন:

সর্বজনীন শংসাপত্র

sudo chmod 644 /etc/apache2/ssl/*.crt

ব্যক্তিগত কী (গুলি)

sudo chmod 640 /etc/apache2/ssl/private/*.key

দ্রষ্টব্য:
উবুন্টু ssl-cert গোষ্ঠীর কারণে গোষ্ঠীর অনুমতিটি READ (640) এ সেট করা হয়েছে। '600' ঠিক আছে।

অ্যাপাচি এসএসএল মডিউল সক্ষম করুন

sudo a2enmod ssl

কোনও অ্যাপাচি সাইটের ফাইল সম্পাদনা করুন এবং সক্ষম করুন

(শেষ অনুচ্ছেদ দেখুন) *

sudo nano /etc/apache/sites-available/mysiteexample-ssl.conf
sudo a2ensite mysiteexample-ssl
#             ^^^^^^^^^^^^^^^^^ <-Substitute your ".conf" filename(s)

অ্যাপাচি 2 পরিষেবা পুনরায় চালু করুন

sudo service apache2 restart

অথবা

sudo systemctl restart apache2.service

সম্পন্ন. আপনার নতুন এসএসএল সাইটটি পরীক্ষা করুন।

* এটি আবার প্রশ্নের বাইরে চলে যায়, তবে আপনি ডিফল্ট অ্যাপাচি এসএসএল সাইট কনফিগারেশন ফাইল ( sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/mysiteexample-ssl.conf) একটি সাধারণ (উবুন্টু / দেবিয়ান) অ্যাপাচি / এসএসএল 'কনফ' ফাইলের অধীনে সাধারণত ব্যবহৃত ডিফল্ট নির্দেশ / ডিরেক্টরিগুলির উদাহরণ হিসাবে ভাল পয়েন্ট / উদাহরণ হিসাবে অনুলিপি করতে পারেন ( । এটি সাধারণত একটি স্ব-স্বাক্ষরিত SSL শংসাপত্র + কী (স্নোয়েল), সিএ বান্ডিলগুলি, পাশাপাশি প্রদত্ত এসএসএল সাইটের জন্য ব্যবহৃত সাধারণ নির্দেশকে নির্দেশ করে to

অনুলিপি করার পরে, কেবলমাত্র নতুন .conf ফাইল সম্পাদনা করুন এবং উপরের নতুন তথ্য / পাথগুলির সাথে এটি প্রয়োজনীয় / যুক্ত / অপসারণ / আপডেট করুন তারপরে sudo a2ensite mysiteexample-sslএটি সক্ষম করতে কার্যকর করুন ।


আপনি কেন / ইত্যাদি / অ্যাপাচি 2 / এসএসএল / বেসরকারীদের অনুমতিের জন্য 710 সেট করার পরামর্শ দিবেন তা নিশ্চিত নয়। ডিরেক্টরিতে (গোষ্ঠীটির জন্য) রিড বিট না রেখে ডিরেক্টরি (গোষ্ঠীর জন্য) এক্সিকিউট বিট সেট করা আমার কাছে খুব একটা বোধগম্য নয়। আপনি কি এটি 750 হিসাবে সেট করার অর্থ দিয়েছিলেন?
chriv

@ চ্রিভ আমি কীভাবে উবুন্টু ডিফল্ট এসএসএল অঞ্চলে এটি সেটআপ দেখি তার ভিত্তিতে কেবলমাত্র অনুমতি সেট করেছি set / ইত্যাদি / এসএসএল / শংসাপত্রগুলি এবং / ইত্যাদি / এসএসএল / প্রাইভেট এবং এসএসএল-শংসাপত্রগুলির গোষ্ঠী ব্যবহার দেখুন। দেখুন stackoverflow.com/a/23408897/503621
bshea

1
অনেক সম্ভাব্য উত্তর সহ একটি জেনেরিক প্রশ্নের খুব সুন্দর এবং বিস্তারিত ব্যাখ্যা। ধন্যবাদ. কেবল কয়েকটি জিনিস যুক্ত করতে, আপনার <VirtualHost *:443>বিভাগে আপনার sites-available/mysite.confশংসাপত্রগুলি অন্তর্ভুক্ত করা উচিত:SSLEngine on SSLCertificateFile /etc/apache2/ssl/mysite.crt SSLCertificateKeyFile /etc/apache2/ssl/private/mysite.key
জর্জ দিমিত্রিয়াদিস

বিটিডাব্লু - একমাত্র অ্যাপাচি ".conf" ফাইলটিতে আপনার: 80 এবং: 443 কনফিগারেশনগুলি একত্রিত করাও সম্ভব। আমি যে কোনওভাবে পোর্ট: 80 এ: 443 / এসএসএলকে কোনওভাবেই পুনর্নির্দেশ করি। .Conf ফাইলে বেসিক এসএসএল সেটিংস স্থাপন করা এবং একটি অতিরিক্ত 'বিস্তারিত' এসএসএল সেটিংস ফাইল তৈরি করা (উদাহরণস্বরূপ ব্যবহৃত সিফারগুলি সেট করার জন্য) এবং ভার্চুয়াল অঞ্চলের বাইরে আপনার সমস্ত .conf ফাইলগুলিতে এটি অন্তর্ভুক্ত করাও সম্ভব। আমি এসএসএলকে কিছুটা 'শক্ত' করতে এই সেটিংসটি ব্যবহার করি এবং আমি এটি প্রতিটি ভার্চুয়াল সাইটে অন্তর্ভুক্ত করি con আমি এই পদ্ধতিতে এসএসএল ল্যাবগুলিতে এ + পেতে পারি ।
বিসিয়া

10

এখানে সকল উত্তর ঠিক আছে বলে মনে হচ্ছে, কিন্তু আমি এক জিনিস আমি দেখেছি একটি সমস্যা ... আপনি intermediates বা শিকড় সঙ্গে আপনার যা নিশ্চিতভাবে ঘটবে কনক্যাটেনেট করার জন্য একটি চেইন ফাইল নিয়ে আসা থাকে, তাহলে উল্লেখ করতে চান না যে রাখা /etc/ssl/certs, কারণ যখন c_rehashএটি চালানো হয়, এটি শিকড়গুলির মধ্যে বা মধ্যস্থতার কারণে আপনার শংসাপত্রগুলিতে হ্যাশ সংলগ্নতা তৈরি করতে পারে।

তারপরে পরে যদি আপনার শংসাপত্রগুলির মেয়াদ শেষ হয়ে যায় এবং আপনি সেগুলি সরিয়ে ফেলেন এবং আবার চালানো জানেন c_rehashনা তবে আপনার /etc/ssl/certsডিরেক্টরিতে আপনার হ্যাশ সিঙ্কলিঙ্কগুলি ভেঙে যেতে পারে এবং যখন আপনার স্থানীয় মেশিনটি নিজের সাথে সংযোগ স্থাপনের চেষ্টা করে তখন অদ্ভুত জিনিসগুলি ঘটতে শুরু করে এসএসএল এবং এটির বিরুদ্ধে বৈধতা দেওয়ার জন্য শিকড়গুলি খুঁজে পাচ্ছে না। উদাহরণস্বরূপ, কার্ল দিয়ে আমি হঠাৎ পেতে শুরু করলাম:

curl: (60) SSL certificate problem: unable to get issuer certificate

কিছু পুরানো .crt এবং কনটেনেটেড .পিএম ফাইলগুলি সাফ করার পরে খুব শীঘ্রই /etc/ssl/certs

কমপক্ষে আপনার চেইনগুলি অন্য কোথাও সংরক্ষণ করা এই সমস্যাটিকে এড়িয়ে চলে। আমি /etc/ssl/local_certsআমার শংসাপত্রগুলি এবং চেইনগুলি ধরে রাখার জন্য শেষ করেছিলাম , তাই সিএ শংসাপত্রগুলির জগতে আপনি হারাবেন না/etc/ssl/certs


2

স্বতন্ত্র ফাইল / ডিরেক্টরিগুলির জন্য এমন কোনও কিছুর জন্য অনুমতি সেট করা থাকে chown root :0 private.keyএবং chmod 600 private.keyকেবলমাত্র রুট এটি পড়তে পারে তবে সেখানে কোনও নিরাপদ জায়গা নেই । সিএসআর এবং শংসাপত্রের ফাইলগুলি আপনি যেমন বলছেন তেমন সংবেদনশীল নয়।

এই অনুমতিগুলির সাথে আপনার যে পথগুলি উল্লেখ করা হয়েছে এবং / usr / স্থানীয় / এসএসএল ভাল হওয়া উচিত।


1
প্রায়শই, ব্যক্তিগত কীগুলিতে অ্যাক্সেস পাওয়া অ্যাপ্লিকেশনগুলি অ-রুট ব্যবহারকারী হিসাবে চলছে। আমি এসএসএল-সার্ট গ্রুপটির অ্যাক্সেস বজায় রাখার পরামর্শ দেব
শেন ম্যাডেন

1
বোধগম্য হলেও ওয়েব সার্ভারগুলি অ্যাপাচে একটি মূল 'প্যারেন্ট' প্রক্রিয়া তৈরি করে এবং এনজিনেক্সকে ধরে নেওয়াও এটি প্রাসঙ্গিক।
জোনাথন রস

1

অবস্থানগুলি সঠিক:

  • /etc/ssl/certs/.crtফাইলের জন্য
  • /etc/ssl/private.keyফাইলের জন্য

মালিক অবশ্যই root:rootউভয়ের জন্য হতে হবে ( sudo chmod root:root <file>প্রয়োজনে পরিবর্তন করতে ব্যবহার করুন )।

অনুমতি :

  • 644.crtফাইলের জন্য
  • 600.keyফাইলের জন্য

এই জন্য কাজ করবে nginx

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