লোকালহোস্টের জন্য কীভাবে স্ব-স্বাক্ষরিত শংসাপত্র তৈরি করবেন?


23

আমি একটি পাসওয়ার্ড দিয়ে এবং নিম্নলিখিত ক্ষেত্রগুলি রুট হিসাবে করেছি

openssl req -x509 -days 365 -newkey rsa:2048 -keyout /etc/ssl/apache.key \
    -out /etc/ssl/apache.crt

ক্ষেত্রসমূহ

Country: FI
State: Pirkanmaa
Locality: Tampere
Organization: masi
Organizational Unit Name: SSL Certificate Test
CommonName: 192.168.1.107/owncloud
EmailAddress: masi@gmail.com

আউটপুট: HTTPS এ এসএসএল হ্যান্ডশেক ত্রুটি। প্রত্যাশিত আউটপুট: HTTPS সংযোগ। এইচটিটিপি কাজ করে।

কোথায় যেতে, owncloud এর থ্রেড চান CommonName URL টি অন্তর্ভুক্ত করা উচিত এখানে । আমি সাধারণ নামটিতে ব্যর্থ চেষ্টা করেছি

  • 192.168.1.107/owncloud
  • 192.168.1.107/

সার্ভারের জন্য ওএস পরীক্ষা করুন: ডেবিয়ান 8.5।
সার্ভার: রাস্পবেরি পাই 3 বি। ওয়ানক্লাউড-সার্ভার: 8.2.5। ওয়ানক্লাউড-ক্লায়েন্ট: 2.1.1। সিস্টেম-ক্লায়েন্ট: ডেবিয়ান 8.5।


আপনি যদি লোকালহোস্টের জন্য সান ব্যবহার করে নতুন এসএসএল শংসাপত্র তৈরি করার সন্ধান করছেন তবে এই পোস্টের পদক্ষেপগুলি আমার পক্ষে কাজ করেছে Centos 7 / Vagrant / Chrome Browser
দামোদর বাশিয়াল

@ দামোদরবাশিয়াল দয়া করে কেবল উত্তরটি সরবরাহ করবেন না তবে উত্তর হিসাবে কিছু বিবরণ দিন।
লিও লোপল্ড হার্টজ 준영

উত্তর:


11

ওপেনএসএল রেক -x509 -দিন 365 -নউকি আরএসএ: 2048 -কিআউট /etc/ssl/apache.key -out /etc/ssl/apache.crt

আপনি সঠিকভাবে গঠিত X.509 শংসাপত্র তৈরি করতে এই আদেশটি ব্যবহার করতে পারবেন না। হোস্টনামটি প্রচলিত নাম (সিএন) এ স্থাপন করা হওয়ায় এটি ত্রুটিযুক্ত হবে । সিএন-তে একটি হোস্ট-নেম বা আইপি ঠিকানা স্থাপন করা আইইটিএফ (বেশিরভাগ সরঞ্জাম, পছন্দ wgetএবং curl) এবং সিএ / বি ফোরাম (সিএ এবং ব্রাউজার) উভয় দ্বারা অবচয় করা হয় ।

আইইটিএফ এবং সিএ / বি ফোরাম উভয়ের মতে সার্ভারের নাম এবং আইপি অ্যাড্রেসগুলি সর্বদা সাবজেক্ট অল্টারনেট নেম (সান) এ যায় । বিধিগুলির জন্য, আরএফসি 5280, ইন্টারনেট এক্স.509 পাবলিক কী অবকাঠামো শংসাপত্র এবং শংসাপত্র প্রত্যাহার তালিকা (সিআরএল) প্রোফাইল এবং সিএ / ব্রাউজার ফোরামের বেসলাইন প্রয়োজনীয়তাগুলি দেখুন

আপনার বেশিরভাগই আপনার প্রয়োজন অনুসারে একটি ওপেনএসএসএল কনফিগারেশন ফাইল ব্যবহার এবং এটি টেইলারিং করা দরকার। নীচে আমি ব্যবহার করি তার একটি উদাহরণ দেওয়া আছে। এটি বলা example-com.confহয়ে থাকে এবং এটি ওপেনএসএসএল কমান্ডের মাধ্যমে দেওয়া হয় -config example-com.conf


এছাড়াও ভাল করে মনে রাখবেন : সব মেশিন বলে দাবী localhost, localhost.localdomain, ইত্যাদি জন্য সার্টিফিকেট জারি সম্পর্কে সতর্কতা অবলম্বন করা আবশ্যক localhost। আমি বলছি না এটা করো না; কিছু কিছু ঝুঁকি জড়িত আছে বুঝতে পারুন।

বিকল্পগুলি localhostহ'ল: (1) ডিএনএস চালান এবং মেশিনের ডিএনএস নামে শংসাপত্র জারি করুন। অথবা, (2) স্ট্যাটিক আইপি ব্যবহার করুন এবং স্থির আইপি ঠিকানা অন্তর্ভুক্ত করুন।


ব্রাউজারগুলি এখনও আপনাকে স্ব-স্বাক্ষরিত শংসাপত্র সম্পর্কে সতর্কতা দেবে যা কোনও বিশ্বাসযোগ্য রুটে ফিরে আসে না । সরঞ্জামগুলি পছন্দ করে curlএবং wgetঅভিযোগ করবে না, তবে আপনাকে সিআরএল-এর মতো বিকল্পের সাহায্যে স্ব স্ব স্বাক্ষর করতে হবে --cafile। ব্রাউজারের বিশ্বাসের সমস্যাটি কাটিয়ে উঠতে আপনাকে নিজের সিএ হতে হবে

"আপনার নিজের সিএ হয়ে উঠুন" একটি প্রাইভেট পিকেআই চালানো হিসাবে পরিচিত। এটির অনেক কিছুই নেই। পাবলিক সিএ যা করতে পারে তা আপনি করতে পারেন। একমাত্র ভিন্ন জিনিসটি আপনার নিজের রুট সিএ শংসাপত্রটি বিভিন্ন দোকানে ইনস্টল করতে হবে । এটা তোলে পরিবর্তে, বলে কোন পার্থক্য, কার্ল এর ব্যবহার করছে cacerts.pmcacerts.pmএটি রুট সিএর একটি সংগ্রহ মাত্র এবং এখন আপনি ক্লাবে যোগদান করেছেন।

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

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

আপনার নিজস্ব সিএ হওয়ার বিষয়ে আরও তথ্যের জন্য দেখুন কীভাবে আপনি আপনার শংসাপত্র কর্তৃপক্ষের সাথে শংসাপত্র স্বাক্ষরকরণের অনুরোধটি স্বাক্ষর করবেন এবং কীভাবে ওপেনসেল দিয়ে স্ব-স্বাক্ষরিত শংসাপত্র তৈরি করবেন?


নীচে কনফিগারেশন ফাইলের মন্তব্যগুলি থেকে ...

স্বাক্ষরিত (-x509 এর সংযোজনটি নোট করুন)

openssl req -config example-com.conf -new -x509 -sha256 -newkey rsa:2048 -nodes -keyout example-com.key.pem -days 365 -out example-com.cert.pem

অনুরোধ স্বাক্ষর (-x509 এর অভাবটি নোট করুন)

openssl req -config example-com.conf -new -newkey rsa:2048 -nodes -keyout example-com.key.pem -days 365 -out example-com.req.pem

স্ব স্বাক্ষরিত মুদ্রণ করুন

openssl x509 -in example-com.cert.pem -text -noout

একটি স্বাক্ষর করার অনুরোধ মুদ্রণ করুন

openssl req -in example-com.req.pem -text -noout

কনফিগারেশন ফাইল

# Self Signed (note the addition of -x509):
#     openssl req -config example-com.conf -new -x509 -sha256 -newkey rsa:2048 -nodes -keyout example-com.key.pem -days 365 -out example-com.cert.pem
# Signing Request (note the lack of -x509):
#     openssl req -config example-com.conf -new -newkey rsa:2048 -nodes -keyout example-com.key.pem -days 365 -out example-com.req.pem
# Print it:
#     openssl x509 -in example-com.cert.pem -text -noout
#     openssl req -in example-com.req.pem -text -noout

[ req ]
default_bits        = 2048
default_keyfile     = server-key.pem
distinguished_name  = subject
req_extensions      = req_ext
x509_extensions     = x509_ext
string_mask         = utf8only

# The Subject DN can be formed using X501 or RFC 4514 (see RFC 4519 for a description).
#   It's sort of a mashup. For example, RFC 4514 does not provide emailAddress.
[ subject ]
countryName         = Country Name (2 letter code)
countryName_default     = US

stateOrProvinceName     = State or Province Name (full name)
stateOrProvinceName_default = NY

localityName            = Locality Name (eg, city)
localityName_default        = New York

organizationName         = Organization Name (eg, company)
organizationName_default    = Example, LLC

# Use a friendly name here because it's presented to the user. The server's DNS
#   names are placed in Subject Alternate Names. Plus, DNS names here is deprecated
#   by both IETF and CA/Browser Forums. If you place a DNS name here, then you 
#   must include the DNS name in the SAN too (otherwise, Chrome and others that
#   strictly follow the CA/Browser Baseline Requirements will fail).
commonName          = Common Name (e.g. server FQDN or YOUR name)
commonName_default      = Example Company

emailAddress            = Email Address
emailAddress_default        = test@example.com

# Section x509_ext is used when generating a self-signed certificate. I.e., openssl req -x509 ...
[ x509_ext ]

subjectKeyIdentifier        = hash
authorityKeyIdentifier  = keyid,issuer

#  If RSA Key Transport bothers you, then remove keyEncipherment. TLS 1.3 is removing RSA
#  Key Transport in favor of exchanges with Forward Secrecy, like DHE and ECDHE.
basicConstraints        = CA:FALSE
keyUsage            = digitalSignature, keyEncipherment
subjectAltName          = @alternate_names
nsComment           = "OpenSSL Generated Certificate"

# RFC 5280, Section 4.2.1.12 makes EKU optional
# CA/Browser Baseline Requirements, Appendix (B)(3)(G) makes me confused
# extendedKeyUsage  = serverAuth, clientAuth

# Section req_ext is used when generating a certificate signing request. I.e., openssl req ...
[ req_ext ]

subjectKeyIdentifier        = hash

basicConstraints        = CA:FALSE
keyUsage            = digitalSignature, keyEncipherment
subjectAltName          = @alternate_names
nsComment           = "OpenSSL Generated Certificate"

# RFC 5280, Section 4.2.1.12 makes EKU optional
# CA/Browser Baseline Requirements, Appendix (B)(3)(G) makes me confused
# extendedKeyUsage  = serverAuth, clientAuth

[ alternate_names ]

DNS.1       = example.com
DNS.2       = www.example.com
DNS.3       = mail.example.com
DNS.4       = ftp.example.com

# Add these if you need them. But usually you don't want them or
#   need them in production. You may need them for development.
# DNS.5       = localhost
# DNS.6       = localhost.localdomain
# DNS.7       = 127.0.0.1

# IPv6 localhost
# DNS.8     = ::1
# DNS.9     = fe80::1

ক্রোমের জন্য আপনাকে নিম্নলিখিতগুলি করার প্রয়োজন হতে পারে। অন্যথায় ক্রোম অভিযোগ করতে পারে একটি সাধারণ নামটি অবৈধ ( ERR_CERT_COMMON_NAME_INVALID) । স্যানের একটি আইপি ঠিকানা এবং এই সিএনএন-এর মধ্যে সম্পর্ক কী তা আমি নিশ্চিত নই।

# IPv4 localhost
# IP.1       = 127.0.0.1

# IPv6 localhost
# IP.2     = ::1

আপনি কি দয়া করে কনফিগার ফাইলে ডিফল্ট পাথ যুক্ত করতে পারেন? - - আপনি দয়া করে সম্পূর্ণ কাজের প্রবাহ প্রদর্শন করতে পারেন? ওপেনএসএল কমান্ড ইত্যাদিতে ফাইলটি পাস করার বিষয়ে - - আমি পূর্ববর্তী উত্তরটি দিয়ে সফল হতে পারি নি তাই সমস্ত প্রয়োজনীয় তথ্যাদি প্রশংসিত হয়।
লিও লোপোল্ড হার্টজ 준영

@ মাসি - "আপনি কি দয়া করে কনফিগার ফাইলে ডিফল্ট পাথ যুক্ত করতে পারেন?" - আপনি কি বোঝাতে চেয়েছেন তা নিশ্চিত না. আপনি যেখানে চান সেখানে এটি সংরক্ষণ করতে পারেন। আমি এটিকে অনেকগুলি মেশিনে ডেস্কটপ থেকে চালিত করি এবং অন্যদের জন্য আমার হোম ডিরেক্টরি। আমি লক্ষ্য করেছি আপনি ব্যবহার করেছেন sudo। হতে পারে আপনার .rndফাইলটির মালিকানা রয়েছে root। যদি তাই হয়, একটি চেষ্টা করুন sudo chown -R masi:masi /home/masi। তারপরে আপনি এটি থেকে পড়তে এবং এটিতে লিখতে সক্ষম হবেন।

আমি এখন কেবল উবুন্টু নয়, কেবলমাত্র দেবিয়ান ব্যবহার করছি। দয়া করে ডেস্কটপে কিপইনভ ফাইল এবং এগিয়ে যাওয়ার বিষয়ে উদাহরণ হিসাবে আপনার কাজের প্রবাহ যুক্ত করুন। সিস্টেম সম্পর্কে আমার স্পষ্ট চিত্র নেই।
লিও লোপোল্ড হার্টজ 준영

1
ফাইলের মাথায় তালিকাভুক্ত কমান্ডগুলির মধ্যে একটি চালান। মন্তব্যগুলি কপি / পেস্ট করার জন্য রয়েছে। আপনার স্বাদ অনুসারে এমনটি চয়ন করুন। আপনি যদি এখনও স্ব স্ব স্বাক্ষরিত করার চেষ্টা করে থাকেন তবে আপনি তাতে কমান্ডটি চালাবেন x509(ঠিক যেমন মন্তব্যটি বলেছেন)।

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

1

CommonNameযাই হোক না কেন যেমন পাঠানো হয় সঙ্গে সংগতিপূর্ণ হওয়া উচিত Host: HTTP- র অনুরোধে হেডার। আপনার ক্ষেত্রে, এটি হবে 192.168.1.107 (পিছনে স্ল্যাশ ছাড়াই)।

একটি ওয়েব সার্ভারের জন্য হোস্টনাম কনফিগার করুন

ব্যক্তিগতভাবে, আমি ওয়েব সার্ভারের জন্য একটি বন্ধুত্বপূর্ণ হোস্টনাম কনফিগার করব। আপনার মেইলে অ্যাপাচি কনফিগারেশন বা ভার্চুয়াল হোস্ট কনফিগারেশন (সম্ভবত /etc/apache2/sites-enabled/000-default.confডেবিয়ান-ভিত্তিক বিতরণের জন্য হতে পারে ), ServerNameবা ServerAliasনির্দেশিকা ব্যবহার করুন , উদাহরণস্বরূপ,

ServerName owncloud.masi

অ্যাপাচি পুনরায় চালু করুন এবং তারপরে ডিএনএস কনফিগার করুন বা (আরও সহজভাবে) প্রতিটি ক্লায়েন্টের এন্ট্রি যুক্ত করুন /etc/hostsযাতে এটি সঠিক আইপি ঠিকানার দিকে নির্দেশ করে, যেমন,

192.168.1.107   owncloud.masi

আমার নিজস্ব ক্লাউড অ্যাক্সেস এ আছে 192.168.1.107। অন্য থ্রেড বলছে যে আপনার সাবডোমেন অন্তর্ভুক্ত করা উচিত। আমি মনে করি এটি বোঝা 192.168.1.107/owncloud। তবে আমি ভুল হতে পারি।
লিও লোপল্ড হার্টজ 준영

ধরুন আপনি এতে ব্যবহার ServerName owncloud.masiকরছেন .../sites-enabled/000-default.conf। কি commonname SSL কী তত্কালীন owncloud.masi ?
লিও লোপল্ড হার্টজ 준영

আইপি-ঠিকানা কি কাজ করা বন্ধ করবে? একইভাবে যদি আপনি ব্যবহার করেন ServerAlias?
লিও লোপোল্ড হার্টজ 준영

1
আইপি ঠিকানার মাধ্যমে অ্যাক্সেস HTTP- র জন্য কাজ করা উচিত। বিটিডাব্লু, আমরা মন্তব্য সীমাতে পৌঁছেছি (সুতরাং আমি আপনার প্রশ্নের আমার পূর্ববর্তী উত্তরগুলি মুছে ফেলেছি) এবং শীঘ্রই আমাকে অফ-লাইন যেতে হবে।
অ্যান্টনি জি - মনিকার পক্ষে ন্যায়বিচার

1
"এইচটিটিপি অনুরোধে হোস্ট: শিরোনাম হিসাবে যা কিছু প্রেরণ করা হবে তার সাথে কমনমনামের সাথে সামঞ্জস্য করা উচিত" - ভুল। হোস্টনাম স্থাপন করা প্রচলিত নামটি আইইটিএফ এবং সিএ / বি ফোরাম উভয়ই হ্রাস করা হয়। সার্ভারের নাম এবং আইপি ঠিকানাগুলি সর্বদা আইইটিএফ এবং সিএ / বি ফোরামে সাবজেক্ট বিকল্প বিকল্পে চলে tern এছাড়াও আপনি কীভাবে আপনার শংসাপত্র কর্তৃপক্ষের সাথে শংসাপত্র স্বাক্ষর করার অনুরোধটি স্বাক্ষর করবেন এবং কীভাবে ওপেনসেল দিয়ে স্ব-স্বাক্ষরিত শংসাপত্র তৈরি করবেন?
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.