OpenSSL සමඟ ස්වයං අත්සන් කළ සහතිකයක් සාදා ගන්නේ කෙසේද


1322

මම කාවැද්දූ ලිනක්ස් උපාංගයකට HTTPS සහාය එක් කරමි. මෙම පියවර සමඟ ස්වයං අත්සන් කළ සහතිකයක් ජනනය කිරීමට මම උත්සාහ කර ඇත:

openssl req -new > cert.csr
openssl rsa -in privkey.pem -out key.pem
openssl x509 -in cert.csr -out cert.pem -req -signkey key.pem -days 1001
cat key.pem>>cert.pem

මෙය ක්‍රියාත්මක වේ, නමුත් ගූගල් ක්‍රෝම් සමඟ මට දෝෂ කිහිපයක් තිබේ:

මෙය බොහෝ විට ඔබ සොයන වෙබ් අඩවිය නොවේ!
වෙබ් අඩවියේ ආරක්ෂක සහතිකය විශ්වාස නැත!

මට යමක් මග හැරී තිබේද? ස්වයං අත්සන් කළ සහතිකයක් තැනීමට මෙය නිවැරදි ක්‍රමයද?


41
ස්වයං අත්සන් කළ සහතික අන්තර්ජාලයට අනාරක්ෂිත යැයි සැලකේ. ෆයර්ෆොක්ස් වෙබ් අඩවිය අවලංගු සහතිකයක් ලෙස සලකනු ඇති අතර ක්‍රෝම් සම්බන්ධතාවය සරල HTTP ලෙස ක්‍රියා කරයි. වැඩි විස්තර: gerv.net/security/self-signed-certs
user1202136

34
ඔබේ CA සහතිකය ඔබේ බ්‍රව්සරයට ආනයනය කළ යුතු අතර ඔබ සහතිකය විශ්වාස කරන බ්‍රව්සර් වෙත පැවසිය යුතුය - නැතහොත් බ්‍රවුසර විසින් දැනටමත් විශ්වාස කර ඇති විශාල මුදල් සඳහා කිසිවක් නැති සංවිධානයක් විසින් අත්සන් කර ගන්න - හෝ අනතුරු ඇඟවීම නොසලකා හැර ක්ලික් කරන්න එය පසුකර යන්න. මම අන්තිම විකල්පයට කැමතියි.
trojanfoe

12
ඔබ එවැනි "කොටස්" OpenSSL සැකසුම් භාවිතා නොකළ යුතුය. එයට හේතුව ඔබට විෂය විකල්ප නාමයේ (SAN) DNS නම් තැබිය නොහැකි බැවිනි. ඔබට වින්‍යාස ගොනුවක් alternate_namesකොටසක් සමඟ ලබා දිය යුතු අතර එය -configවිකල්පය සමඟ සම්මත කරන්න . එසේම, පොදු නාමයේ (සීඑන්) ඩීඑන්එස් නමක් තැබීම අයිඊටීඑෆ් සහ සීඒ / බ්‍රව්සර් සංසද දෙකම විසින් ප්‍රතික්ෂේප කරනු ලැබේ (නමුත් තහනම් නොවේ). සීඑන් හි ඕනෑම ඩීඑන්එස් නමක් SAN හි තිබිය යුතුය. SAN භාවිතා කිරීමෙන් වැළකී සිටීමට ක්‍රමයක් නොමැත. පිළිතුර පහත බලන්න.
jww

6
Wwwjww ගේ ප්‍රකාශයට අමතරව. සෑම මැයි 2017 සඳහාම ක්‍රෝම් සහතිකය පිළිගන්නේ නැත w / o (emtpy) SAN: "මෙම වෙබ් අඩවිය සඳහා වන සහතිකයේ ඩොමේන් නාමයක් හෝ IP ලිපිනයක් අඩංගු විෂය විකල්ප නාම දිගුවක් අඩංගු නොවේ."
ජෙරාඩ් ජේපී

6
මේ දිනවල, ඔබේ වෙබ් සේවාදායකයට අන්තර්ජාලය හරහා 80 වන වරාය තුළ ඇති FQDN මඟින් ප්‍රවේශ විය හැකි තාක් කල්, ඔබට LetsEncrypt භාවිතා කර නොමිලේ සම්පූර්ණ CA සහතික ලබා ගත හැකිය (දින 90 ක් සඳහා වලංගු වේ, අලුත් කිරීම ස්වයංක්‍රීය කළ හැකිය) කිසිදු බ්‍රව්සර් අනතුරු ඇඟවීමක් ලබා නොදේ / පණිවිඩ. www.letsencrypt.com
බාර්නි

Answers:


2183

ඔබට එය එක් විධානයකින් කළ හැකිය:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365

මුරපදයකින් ඔබේ පුද්ගලික යතුර ආරක්ෂා කිරීමට ඔබට අවශ්‍ය නැතිනම් ඔබට -nodes(කෙටියෙන් no DES) එකතු කළ හැකිය . එසේ නොමැතිනම් එය "අවම වශයෙන් අක්ෂර 4 ක්" මුරපදයක් ඉල්ලා සිටිනු ඇත.

මෙම daysපරාමිතිය (365) ඔබ කල් ඉකුත් දිනය බලපාන ඕනෑම අංකය වෙනුවට හැක. එවිට එය "රටේ නම" වැනි දේ සඳහා ඔබෙන් විමසනු ඇත, නමුත් ඔබට Enterපෙරනිමි වලට පහර දී පිළිගත හැකිය.

-subj '/CN=localhost'සහතිකයේ අන්තර්ගතය පිළිබඳ ප්‍රශ්න යටපත් කිරීමට එකතු කරන්න ( localhostඔබ කැමති වසම සමඟ ප්‍රතිස්ථාපනය කරන්න).

ඔබ කලින් බ්‍රව්සර් වෙත ආනයනය කළහොත් මිස ස්වයං අත්සන් කළ සහතික කිසිදු තෙවන පාර්ශවයක් සමඟ වලංගු නොවේ. ඔබට වැඩි ආරක්ෂාවක් අවශ්‍ය නම්, ඔබ සහතික අධිකාරියක් (CA) විසින් අත්සන් කරන ලද සහතිකයක් භාවිතා කළ යුතුය .


9
ඔබ කැමති ඕනෑම දෙයක් සත්‍යාපනය කිරීමට අවශ්‍ය නම්, උනන්දුවක් දක්වන ඕනෑම කෙනෙකුට, මෙන්න ප්‍රලේඛනය .

17
තෙවන පාර්ශවයක් සමඟ අත්සන් කිරීම වැඩි ආරක්ෂාවක් සපයන්නේ කෙසේද?
ජේම්ස් මිල්ස්

207
ස්වයංක්‍රීයකරණයේදී මෙය භාවිතා කරන වෙනත් ඕනෑම කෙනෙකුට, මෙම විෂය සඳහා පොදු පරාමිතීන් සියල්ලම මෙන්න:-subj "/C=US/ST=Oregon/L=Portland/O=Company Name/OU=Org/CN=www.example.com"
ඇලෙක්ස් එස්

18
@ ජේම්ස්මිල්ස් මම අදහස් කළේ, ඒ ගැන සිතා බලන්න - ඔහුගේ වෑන් රථයේ පැත්තේ ලියා ඇති “නිදහස් කැන්ඩි” සහිත සෙවන සහිත පුද්ගලයෙක් ඔබට ඇතුළට එන ලෙස ආරාධනා කළහොත්, ඔබ මුළුමනින්ම දෙවරක් සිතා බලා ඒ ගැන පරෙස්සම් වන්න - නමුත් ඔබ විශ්වාස කරන කෙනෙක් - ඇත්තටම විශ්වාස කරනවා වගේ - සියල්ල හරියට, “නව මිනිසා, ඔහු නීත්‍යානුකූලයි” ඔබ ඒ නිදහස් රසකැවිලි ගැන සියල්ලම වනු ඇත.
BrainSlugs83

76
-sha256SHA-256 මත පදනම් වූ සහතිකයක් ජනනය කිරීමට භාවිතා කිරීමට මතක තබා ගන්න .
Gea-Suan Lin

549

මට යමක් මග හැරී තිබේද? ස්වයං අත්සන් කළ සහතිකයක් තැනීමට මෙය නිවැරදි ක්‍රමයද?

ස්වයං අත්සන් කළ සහතිකයක් සෑදීම පහසුය. ඔබ openssl reqවිධානය භාවිතා කරන්න . බ්‍රව්සර් සහ විධාන රේඛා මෙවලම් වැනි විශාලතම සේවාදායකයින් විසින් පරිභෝජනය කළ හැකි එකක් නිර්මාණය කිරීම උපක්‍රමශීලී විය හැකිය.

බ්‍රව්සර් වලට ඔවුන්ගේම අවශ්‍යතා සමූහයක් ඇති බැවින් එය දුෂ්කර වන අතර ඒවා IETF වලට වඩා සීමා කර ඇත. බ්‍රව්සර් භාවිතා කරන අවශ්‍යතා CA / බ්‍රව්සර් සංසදවල ලේඛනගත කර ඇත (පහත යොමු බලන්න). ප්‍රධාන අංශ දෙකක සීමාවන් පැන නගී: (1) විශ්වාස නැංගුරම් සහ (2) ඩීඑන්එස් නම්.

නවීන බ්‍රව්සර් (2014/2015 දී අප භාවිතා කරන ගබඩාව වැනි) විශ්වාසදායක නැංගුරමකට නැවත සම්බන්ධ වන සහතිකයක් අවශ්‍ය වන අතර ඔවුන්ට අවශ්‍ය වන්නේ ඩීඑන්එස් නම් සහතිකයේ විශේෂිත ආකාරවලින් ඉදිරිපත් කිරීමයි. ස්වයං-අත්සන් කළ සේවාදායක සහතික වලට එරෙහිව බ්‍රව්සර් ක්‍රියාකාරීව ගමන් කරයි.

සමහර බ්‍රව්සර් ස්වයං-අත්සන් කළ සේවාදායක සහතිකයක් ආනයනය කිරීම හරියටම පහසු නොකරයි. ඇත්ත වශයෙන්ම, ඔබට ඇන්ඩ්‍රොයිඩ් බ්‍රව්සරය වැනි සමහර බ්‍රව්සර් සමඟ කළ නොහැක. එබැවින් සම්පූර්ණ විසඳුම ඔබේම අධිකාරිය බවට පත්වීමයි.

ඔබේම අධිකාරියක් බවට පත් නොවූ විට, සහතිකය සාර්ථක වීමට විශාලතම අවස්ථාව ලබා දීම සඳහා ඔබ DNS නම් නිවැරදිව ලබා ගත යුතුය. නමුත් ඔබේම අධිකාරියක් වීමට මම ඔබව දිරිමත් කරමි. ඔබේම අධිකාරියක් බවට පත්වීම පහසු වන අතර, එය සියලු විශ්වාසනීය කාරණා මග හරිනු ඇත (ඔබට වඩා විශ්වාස කිරීමට වඩා හොඳ කවුද?).


මෙය බොහෝ විට ඔබ සොයන වෙබ් අඩවිය නොවේ!
වෙබ් අඩවියේ ආරක්ෂක සහතිකය විශ්වාස නැත!

මෙයට හේතුව සේවාදායක සහතික වලංගු කිරීම සඳහා බ්‍රව්සර් විශ්වාස කළ හැකි නැංගුරම් ලැයිස්තුවක් භාවිතා කිරීමයි. ස්වයං-අත්සන් කළ සහතිකයක් විශ්වාසදායක නැංගුරමකට නැවත සම්බන්ධ නොවේ.

මෙය වළක්වා ගත හැකි හොඳම ක්‍රමය නම්:

  1. ඔබේම අධිකාරියක් සාදන්න (එනම්, CA බවට පත් වන්න )
  2. සේවාදායකයා සඳහා සහතික අත්සන් කිරීමේ ඉල්ලීමක් (CSR) සාදන්න
  3. ඔබේ CA යතුර සමඟ සේවාදායකයේ CSR අත්සන් කරන්න
  4. සේවාදායකයේ සේවාදායක සහතිකය ස්ථාපනය කරන්න
  5. CA සහතිකය සේවාදායකයා මත ස්ථාපනය කරන්න

පියවර 1 - ඔබේම අධිකාරියක් නිර්මාණය කිරීම යනු ස්වයං අත්සන සහිත සහතිකයක් CA: trueසහ නිසි යතුරු භාවිතයෙන් නිර්මාණය කිරීමයි. ඒ කියන්නේ විෂය සහ නිකුත් කරන්නා එකම වස්තුවක් වන අතර, මූලික සීමාවන් තුළ CA සත්‍ය ලෙස සකසා ඇත (එය විවේචනාත්මක යැයි ද සලකුණු කළ යුතුය), ප්‍රධාන භාවිතය keyCertSignසහ crlSign(ඔබ CRL භාවිතා කරන්නේ නම්), සහ විෂය යතුරු හඳුනාගැනීමේ යන්ත්‍රය (SKI) ඇති පරිදි එම අධිකාරිය කී හඳුන්වනය (අකි).

ඔබේම සහතික අධිකාරියක් වීමට, බලන්න * ඔබේ සහතික කිරීමේ අධිකාරිය සමඟ සහතික අත්සන් කිරීමේ ඉල්ලීමකට ඔබ අත්සන් කරන්නේ කෙසේද? තොග පිටාර ගැලීම මත. ඉන්පසු, ඔබේ CA බ්‍රව්සරය භාවිතා කරන විශ්වාස ගබඩාවට ආයාත කරන්න.

පියවර 2 - 4 ඔබ වැනි CA සේවය ගොනුකර විට සේවාදායකය මුහුණ දෙන පොදු සඳහා දැන් මොකද කරන්නේ දළ වශයෙන් වේ Startcom හෝ CAcert . පියවර 1 සහ 5 මඟින් තෙවන පාර්ශවීය අධිකාරිය මග හැරීමට සහ ඔබේම අධිකාරිය ලෙස ක්‍රියා කිරීමට ඔබට ඉඩ සලසයි (ඔබට වඩා විශ්වාස කිරීමට වඩා හොඳ කවුද?).

බ්‍රව්සර් අනතුරු ඇඟවීම වළක්වා ගත හැකි ඊළඟ හොඳම ක්‍රමය වන්නේ සේවාදායකයාගේ සහතිකය විශ්වාස කිරීමයි. නමුත් ඇන්ඩ්‍රොයිඩ් හි සුපුරුදු බ්‍රව්සරය වැනි සමහර බ්‍රව්සර් ඔබට එය කිරීමට ඉඩ නොදේ. එබැවින් එය කිසි විටෙකත් වේදිකාවේ වැඩ නොකරනු ඇත.

ස්වයං-අත්සන් කළ සහතික විශ්වාස නොකිරීමට බ්‍රව්සර් (සහ වෙනත් සමාන පරිශීලක නියෝජිතයින්) පිළිබඳ ගැටළුව අන්තර්ජාලයේ (IoT) විශාල ගැටලුවක් වනු ඇත. උදාහරණයක් ලෙස, ඔබ එය ක්‍රමලේඛනය කිරීම සඳහා ඔබේ තාප ස්ථායයට හෝ ශීතකරණයට සම්බන්ධ කළ විට කුමක් සිදුවේද? පිළිතුර නම්, පරිශීලක අත්දැකීම් සම්බන්ධයෙන් යහපත් කිසිවක් නැත.

W3C හි WebAppSec ක්‍රියාකාරී කණ්ඩායම මෙම ගැටළුව දෙස බැලීමට පටන් ගෙන තිබේ. උදාහරණයක් ලෙස, යෝජනාව බලන්න: HTTP ආරක්ෂිත නොවන ලෙස සලකුණු කිරීම .


OpenSSL සමඟ ස්වයං අත්සන් කළ සහතිකයක් සාදා ගන්නේ කෙසේද

පහත දැක්වෙන විධානයන් සහ වින්‍යාස ගොනුව ස්වයං අත්සන් කළ සහතිකයක් නිර්මාණය කරයි (අත්සන් කිරීමේ ඉල්ලීමක් නිර්මාණය කරන්නේ කෙසේද යන්නත් එය පෙන්වයි). ඒවා එක් ආකාරයකින් අනෙක් පිළිතුරු වලට වඩා වෙනස් ය: ස්වයං අත්සන් කළ සහතිකය සඳහා භාවිතා කරන ඩීඑන්එස් නම් විෂය විකල්ප නාමයේ (එස්ඒඑන්) ඇත , පොදු නම (සීඑන්) නොවේ .

රේඛාව සමඟ වින්‍යාස ගොනුව හරහා ඩීඑන්එස් නම් SAN තුළ තැන්පත් කර ඇත subjectAltName = @alternate_names(විධාන රේඛාව හරහා එය කිරීමට ක්‍රමයක් නොමැත). එවිට alternate_namesවින්‍යාස ගොනුවේ කොටසක් ඇත (ඔබේ රුචිකත්වයට සරිලන පරිදි මෙය සුසර කළ යුතුය):

[ 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
# IP.1        = 127.0.0.1
# IP.2        = ::1

අයිඑන්ටීඑෆ් සහ සීඒ / බ්‍රව්සර් සංසද දෙකම පුහුණුව නියම කරන හෙයින් ඩීඑන්එස් නම එස්එන් තුළ නොව සීඑන් තුළ තැබීම වැදගත් ය . සීඑන් හි ඩීඑන්එස් නම් අවලංගු කර ඇති බව ද ඔවුන් සඳහන් කරයි (නමුත් තහනම් නැත). ඔබ සීඑන් තුළ ඩීඑන්එස් නමක් තැබුවහොත්, එය සීඒ / බී ප්‍රතිපත්ති යටතේ SAN හි ඇතුළත් කළ යුතුය. එබැවින් ඔබට විෂය විකල්ප නම භාවිතා කිරීමෙන් වැළකී සිටිය නොහැක.

ඔබ ඩීඑන්එස් නම් SAN හි ඇතුළත් නොකරන්නේ නම්, සහතිකය බ්‍රව්සරයක් සහ CA / බ්‍රව්සර් සංසදයේ මාර්ගෝපදේශ අනුගමනය කරන වෙනත් පරිශීලක නියෝජිතයන් යටතේ වලංගු කිරීමට අසමත් වනු ඇත.

ආශ්‍රිත: බ්‍රව්සර් CA / බ්‍රව්සර් සංසද ප්‍රතිපත්ති අනුගමනය කරයි; අයිඊටීඑෆ් ප්‍රතිපත්ති නොවේ. OpenSSL සමඟ සාදන ලද සහතිකයක් (සාමාන්‍යයෙන් IETF අනුගමනය කරයි) සමහර විට බ්‍රව්සරයක් යටතේ වලංගු නොවීමට එය එක් හේතුවකි (බ්‍රව්සර් CA / B අනුගමනය කරයි). ඒවා විවිධ ප්‍රමිතීන් වන අතර ඒවාට විවිධ නිකුත් කිරීමේ ප්‍රතිපත්ති සහ විවිධ වලංගුකරණ අවශ්‍යතා ඇත.


ස්වයං අත්සන් කළ සහතිකයක් සාදන්න ( -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විකල්පයේ lack නතාවය සැලකිල්ලට ගන්න):

openssl req -config example-com.conf -new -sha256 -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

වින්‍යාස ගොනුව ( -configවිකල්පය හරහා සම්මත )

[ 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).
#   Its 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

# You only need digitalSignature below. *If* you don't allow
#   RSA Key transport (i.e., you use ephemeral cipher suites), then
#   omit keyEncipherment because that's key transport.
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
#   In either case, you probably only need serverAuth.
# 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
#   In either case, you probably only need serverAuth.
# 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

ඔබට Chrome සඳහා පහත සඳහන් දෑ කිරීමට අවශ්‍ය විය හැකිය. එසේ නොමැතිනම් පොදු නමක් අවලංගු යැයි ක්‍රෝම් පැමිණිලි කළ හැකිය ( )ERR_CERT_COMMON_NAME_INVALID . මෙම අවස්ථාවෙහිදී SAN හි IP ලිපිනයක් සහ සීඑන් එකක් අතර ඇති සම්බන්ධය කුමක්දැයි මට විශ්වාස නැත.

# IPv4 localhost
# IP.1       = 127.0.0.1

# IPv6 localhost
# IP.2     = ::1

X.509 / PKIX සහතික වල DNS නම් හැසිරවීම සම්බන්ධයෙන් වෙනත් නීති තිබේ. නීති සඳහා මෙම ලේඛන වෙත යොමු වන්න:

RFC 6797 සහ RFC 7469 ලැයිස්තුගත කර ඇත්තේ ඒවා අනෙක් RFC සහ CA / B ලේඛනවලට වඩා සීමා සහිත බැවිනි. RFCs 6797 සහ 7469 නැහැ එක්කෝ, IP ලිපිනය ඉඩ ලබා දේ.


4
alternate_namesකොටසේ ආදේශක කාඩ්පත් භාවිතා කළ හැකිද? විශේෂයෙන් උප-උප වසම්. මෙම පිළිතුර මෙහි සඳහන් කිරීමේදී මට ප්‍රශ්නයක් තිබේ: serverfault.com/questions/711596/…
ලෙනාඩ් චලිස්

3
මම ඔහුගේ නිශ්චිත ප්‍රශ්නයට පිළිතුරු දී ඇත්තෙමි. පිළිතුර ඉතා සරල වූ විට මෙම දිගු ආරක්ෂක විස්තරය එකතු කිරීම තේරුමක් නැති බව මම සිතමි
ඩියාගෝ වොයිටසෙන්

14
iediegows - ඔබේ පිළිතුර සම්පූර්ණ හෝ නිවැරදි නොවේ. එය නිවැරදි නොවීමට හේතුව ඔබට කියවීමට අවශ්‍ය නැති දිගු පෝස්ට් එකේ සාකච්ඡා කෙරේ :)
jww

1
ස්තූතියි! මට ඔබගේ සටහන ඉතා ප්‍රයෝජනවත් විය. FYI මම මෑතකදී සුරක්ෂිතාගාරය සමඟ සෙල්ලම් කරමින් සිටියදී එය DNS.x 127 ට වඩා IP.x 127.0.0.1 මත අවධාරනය කර ඇති බව මට පෙනී ගියේය ... මෙය සම්මතයේ තිබේද නැද්ද යන්න මම පරීක්ෂා කළේ නැත.
චොමේ

4
ස්තූතියි @jww. ඔබ කතා කොට, ' ' (එනම්, වරලත් ගණකාධිකාරී බවට පත්) 1. ඔබේ ම බලය නිර්මාණය කරන්න " , කතා කොට, ' ' මත සේවාලාභියා CA සහතිකය ස්ථාපනය 5." . මූල යතුර සම්මුතියකට ලක් වුවහොත්, අනිෂ්ට පුද්ගලයෙකුට එම යතුර සමඟ ඕනෑම වසමක් සඳහා සහතිකයක් අත්සන් කළ හැකි අතර, ඔවුන් ඔබව ඔවුන්ගේ වෙබ් අඩවියට යෑමට පොළඹවන්නේ නම්, ඔවුන්ට දැන් මැදිවියේ ප්‍රහාරයක් කළ හැකිය. මූල CA නිර්මාණය කිරීමට ක්‍රමයක් තිබේද, එයට සහතික කළ හැක්කේ අතරමැදි වර්‍ගවලට පමණක් අත්සන් කළ හැකි ද? එවිට ඔබට ඔබගේ අතරමැදි වරල නාමය සීමාවකින් ආරක්ෂා කළ හැකිය.
රොබින් සිමර්මන්

411

@ ඩිගෝස්ගේ පිළිතුරෙහි විස්තර කර ඇති විකල්පයන් මෙන්න , වඩාත් විස්තරාත්මකව, ප්‍රලේඛනයෙන් :

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days XXX
req

PKCS # 10 සහතික ඉල්ලීම සහ සහතික ජනන උපයෝගීතාව.

-x509

මෙම විකල්පය සහතික ඉල්ලීමක් වෙනුවට ස්වයං අත්සන් කළ සහතිකයක් ලබා දෙයි. මෙය සාමාන්‍යයෙන් පරීක්ෂණ සහතිකයක් හෝ ස්වයං අත්සන් කළ මූල CA උත්පාදනය කිරීමට භාවිතා කරයි.

-newkey arg

මෙම විකල්පය නව සහතික ඉල්ලීමක් සහ නව පුද්ගලික යතුරක් නිර්මාණය කරයි. තර්කය ආකාර කිහිපයකින් එකක් ගනී. rsa: nbits , එහිදී nbits යනු බිටු ගණන වන අතර ප්‍රමාණයෙන් RSA යතුරු nbits ජනනය කරයි .

-keyout filename

මෙය අලුතින් සාදන ලද පුද්ගලික යතුර ලිවීමට ගොනු නාමය ලබා දෙයි.

-out filename

මෙය ලිවීමට ප්‍රතිදාන ගොනු නාමය හෝ පෙරනිමියෙන් සම්මත ප්‍රතිදානය නියම කරයි.

-days n

වූ විට -x509 විකල්පය සහතිකය සහතික කිරීමට මෙම නිශ්චිතව දක්වා දින ගණන භාවිතා කොට ඇත. පෙරනිමිය දින 30 කි.

-nodes

මෙම විකල්පය නියම කර ඇත්නම් පුද්ගලික යතුරක් සාදනු ලැබුවහොත් එය සංකේතනය නොවනු ඇත.

ප්‍රලේඛනය ඇත්ත වශයෙන්ම ඉහත ඒවාට වඩා සවිස්තරාත්මක ය; මම එය මෙහි සාරාංශ කළෙමි.


3
මෙම XXXවන 'සඳහා වන සහතිකය සහතික කිරීමට දින ගණන' සමග මුල් විධානය ලබාදිය යුතු වේ. පෙරනිමිය දින 30 කි. උදාහරණයක් ලෙස, ඔබගේ සහතිකය දින 365 ක් සඳහා වලංගු වීමට අවශ්‍ය නම් -days XXXබවට පත්වේ -days 365. වැඩි විස්තර සඳහා ලියකියවිලි බලන්න .
නේතන් ජෝන්ස්

ප්‍රලේඛනය එක් කිරීම ගැන ස්තූතියි. මෙම පිළිතුරට සමාන යැයි පෙනෙන විධානයක්
රතු පී

328

2020 වන විට, පහත දැක්වෙන විධානය මඟින් SAN ඇතුළුව ඔබගේ සියලු අවශ්‍යතා සපුරාලයි:

openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \
  -keyout example.key -out example.crt -extensions san -config \
  <(echo "[req]"; 
    echo distinguished_name=req; 
    echo "[san]"; 
    echo subjectAltName=DNS:example.com,DNS:www.example.net,IP:10.0.0.1
    ) \
  -subj "/CN=example.com"

OpenSSL ≥ 1.1.1 හි මෙය කෙටි කළ හැකිය:

openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \
  -keyout example.key -out example.crt -subj "/CN=example.com" \
  -addext "subjectAltName=DNS:example.com,DNS:www.example.net,IP:10.0.0.1"

එය සහතිකයක් නිර්මාණය කරයි

  • (උප) වසම් සඳහා example.comසහ www.example.net(SAN) සඳහා වලංගු වේ ,
  • IP ලිපිනය 10.0.0.1(SAN) සඳහා ද වලංගු වේ ,
  • සාපේක්ෂව ශක්තිමත් (2020 වන විට) සහ
  • 3650දින සඳහා වලංගු වේ (අවුරුදු 10).

එය පහත ලිපිගොනු නිර්මාණය කරයි:

  • පුද්ගලික යතුර: example.key
  • සහතිකය: example.crt

සියලුම තොරතුරු විධාන රේඛාවේ දක්වා ඇත. නැත කිසිදු අන්තර් ආදාන ඔබ හොඳට බව. ඇත නැත config ගොනු සමග අවුල් කිරීමට ඔබට ඇත. අවශ්‍ය සියලු පියවර ක්‍රියාත්මක කරනු ලබන්නේ a තනි OpenSSL ආයාචනයක් : පුද්ගලික යතුරු උත්පාදනයේ සිට ස්වයං අත්සන සහතිකය දක්වා.

සටහන # 1: ක්‍රිප්ටෝ පරාමිතීන්

සහතිකය ස්වයං-අත්සන් කර ඇති අතර පරිශීලකයින් විසින් එය අතින් පිළිගත යුතු බැවින්, කෙටි කල් ඉකුත්වීමක් හෝ දුර්වල ගුප්ත ලේඛන භාවිතා කිරීම අර්ථවත් නොවේ.

අනාගතයේදී, ඔබට 4096RSA යතුර සඳහා බිටු වලට වඩා භාවිතා කිරීමට අවශ්‍ය විය හැකි අතර හැෂ් ඇල්ගොරිතම වඩා ශක්තිමත් වේsha256 , නමුත් 2020 වන විට මේවා බුද්ධිමත් අගයන් වේ. සියලුම නවීන බ්‍රව්සර්වල සහාය ඇතිව ඒවා ප්‍රමාණවත් තරම් ශක්තිමත් ය.

සටහන # 2: පරාමිතිය "-nodes "

න්‍යායාත්මකව ඔබට -nodesපරාමිතිය ("DES සංකේතනය කිරීමක් නැත" යන්නෙන් අදහස් කළ හැකිය) අතහැර දැමිය හැකියexample.key මුරපදයකින් සංකේතනය වනු ඇත. කෙසේ වෙතත්, මෙය සේවාදායක ස්ථාපනය සඳහා කිසි විටෙකත් ප්‍රයෝජනවත් නොවේ, මන්ද ඔබට එක්කෝ මුරපදය සේවාදායකයේ ගබඩා කිරීමට සිදුවනු ඇත, නැතහොත් එක් එක් නැවත පණගැන්වීමේදී ඔබට එය අතින් ඇතුළත් කළ යුතුය.

3 වන සටහන: මෙයද බලන්න


1
C: / Program Files / Git / CN = localhost දක්වා ව්‍යාප්ත වන arg / CN = localhost හි හරියටම දොස් පැවරිය යුත්තේ කුමක් දැයි මට සිතාගත නොහැකි විය, එබැවින් මම සම්පූර්ණ විධානයම සරල cmd.exe වලින් ධාවනය කළ අතර එය හොඳින් ක්‍රියාත්මක විය. යමෙක් මේ සමඟ පොරබදමින් සිටී නම්.
යූරි පොස්නියැක්

1
RanFranklinYu මෙතැන් සිට වසර 10 කින් rsa: 2048 ප්‍රමාණවත් වනු ඇතැයි ඔබට විශ්වාසද? මන්ද එය වලංගු කාලයයි. පැහැදිලි කළ පරිදි, කෙටි කල් ඉකුත්වීම හෝ දුර්වල ක්‍රිප්ටෝ භාවිතා කිරීම තේරුමක් නැත. බොහෝ 2048-බිට් ආර්එස්ඒ යතුරු වල වලංගු කාල සීමාව අවුරුදු 1-3 කි. OpenSSL 1.1.1 සම්බන්ධයෙන්, මම තවමත් sha256 එහි තබමි, එබැවින් ඔබට වඩා ශක්තිමත් හැෂ් එකක් අවශ්‍ය නම් වෙනස් කිරීම වඩාත් පැහැදිලිව හා පැහැදිලිව පෙනේ.
වෝග්

1
AveDaveFerguson ඒ //CN=localhostවෙනුවට සහතිකය නිර්මාණය කර /CN=localhostනැද්ද? නිසි ලෙස පැන යාම මෙහි උපකාරයක් වේද? නිදසුනක් වශයෙන්, ප්‍රතිස්ථාපනය /CN=localhostකිරීමෙන් "/CN=localhost"ගැටලුව පිරිසිදු ආකාරයකින් විසඳා ගත හැකිද?
vog

5
බොයිලේරු විශාල ප්‍රමාණයක් සහිත දිගු සුළං සහිත වින්‍යාස ගොනුවක් සෑදීමකින් තොරව නව අවශ්‍ය SAN භාවිතා කරන “එක්-ලයිනර්” නිර්මාණය කිරීම සඳහා 1000 + 1s. හොඳට කලා!
ජෝෂුවා පින්ටර්

1
ස්තූතියි! මම මෙය පිළිතුරට සංස්කරණය කළෙමි. වින්ඩෝස් / මින්ජීඩබ්ලිව් සඳහා දැන් පිළිතුර නිවැරදි ද?
වෝග්

148

මට අදහස් දැක්විය නොහැක, එබැවින් මම මෙය වෙනම පිළිතුරක් ලෙස තබමි. පිළිගත් එක්-ලයිනර් පිළිතුර සමඟ ගැටළු කිහිපයක් මට හමු විය:

  • එක් ලයිනර් යතුරේ මුරපදයක් ඇතුළත් වේ.
  • එක් ලයිනර් SHA-1 භාවිතා කරන අතර එය බොහෝ බ්‍රව්සර්වල කොන්සෝලය තුළ අනතුරු ඇඟවීම් කරයි.

මුරපදය ඉවත් කිරීම, අනතුරු ඇඟවීම් මැඩපැවැත්වීම සඳහා ආරක්ෂාව ඉහළ නැංවීම සහ සම්පූර්ණ ප්‍රශ්න ලැයිස්තුව ඉවත් කිරීම සඳහා -subj හි සම්මත කිරීම සඳහා අදහස් දැක්වීමේ යෝජනාවක් ඇතුළත් කරන සරල කළ අනුවාදයක් මෙන්න:

openssl genrsa -out server.key 2048
openssl rsa -in server.key -out server.key
openssl req -sha256 -new -key server.key -out server.csr -subj '/CN=localhost'
openssl x509 -req -sha256 -days 365 -in server.csr -signkey server.key -out server.crt

ඔබට අවශ්‍ය ඕනෑම වසමක් සමඟ 'localhost' ප්‍රතිස්ථාපනය කරන්න. OpenSSL විසින් මුරපදයක් ඉල්ලා සිටින බැවින් ඔබට පළමු විධාන දෙක එකින් එක ධාවනය කිරීමට අවශ්‍ය වනු ඇත.

.Pm ගොනුවකට මේ දෙක ඒකාබද්ධ කිරීම සඳහා:

cat server.crt server.key > cert.pem

6
මට github.com/molnarg/node-http2 සඳහා dev සහතිකයක් අවශ්‍ය වූ අතර මෙම පිළිතුර හොඳම ය.
කපජ්

1
තනි ගොනුවක සහතිකය සහ යතුර ඒකාබද්ධ කිරීම සඳහා : cat server.crt server.key >foo-cert.pem. උදාහරණය සමඟ ක්‍රියා කරයිopenssl-1.0.2d/demos/ssl/
18446744073709551615

මම මේ ආකාරයෙන් ජනනය කළ සහතිකය තවමත් SHA1 භාවිතා කරයි.
user169771

1
Tks, FreeBSD 10 OpenLDAP 2.4සමඟ ස්වයං අත්සන් කළ සහතිකයක් නිර්මාණය කිරීම සඳහා විශිෂ්ට ලෙස ක්‍රියා කරයිTLS
Thiago Pereira

2
Key.pem ගොනුව ගැන කුමක් කිව හැකිද?
quikchange

75

නවීන බ්‍රව්සර් දැන් SAN (විෂය විකල්ප නම) නොමැති නම් හොඳින් සකස් කරන ලද ස්වයං අත්සන් සහතික සඳහා ආරක්ෂක දෝෂයක් ඇති කරයි. මෙය නියම කිරීමට OpenSSL විධාන රේඛා ක්‍රමයක් සපයන්නේ නැත , එබැවින් බොහෝ සංවර්ධකයින්ගේ නිබන්ධන සහ පිටු සලකුණු හදිසියේම යල් පැන ඇත.

නැවත ධාවනය වීමට ඉක්මන්ම ක්‍රමය කෙටි, තනිවම ඇති ගොනුවකි:

  1. ක OpenSSL config ගොනුව (උදාහරණ: නිර්මාණය req.cnf)

    [req]
    distinguished_name = req_distinguished_name
    x509_extensions = v3_req
    prompt = no
    [req_distinguished_name]
    C = US
    ST = VA
    L = SomeCity
    O = MyCompany
    OU = MyDivision
    CN = www.company.com
    [v3_req]
    keyUsage = critical, digitalSignature, keyAgreement
    extendedKeyUsage = serverAuth
    subjectAltName = @alt_names
    [alt_names]
    DNS.1 = www.company.com
    DNS.2 = company.com
    DNS.3 = company.net
    
  2. මෙම වින්‍යාස ගොනුව යොමු කරමින් සහතිකය සාදන්න

    openssl req -x509 -nodes -days 730 -newkey rsa:2048 \
     -keyout cert.key -out cert.pem -config req.cnf -sha256
    

උදාහරණ වින්‍යාසය https://support.citrix.com/article/CTX135602


1
දෝෂයක් ඇති කළ 'දිගුව' v3_req 'පරාමිතිය ඉවත් කිරීමෙන් පසුව එය මට වැඩ කළේය. කවුළු සඳහා OpenSSL භාවිතා කිරීම. අවසාන වශයෙන්, මම මෙම ගැටළුව විසඳීමට කළමනාකරණය කරමි! ස්තූතියි.
සීගෝඩෝ

1
Y කියෝපැක්සා ඔබ නිවැරදියි - එම පරාමිතිය සීඑන්එෆ් ගොනුවේ 3 වන පේළිය සමඟ අතිරික්ත වේ; යාවත්කාලීන කරන ලදි.
රයිමෝ

2
Way න මාර්ගය. ස්තූතියි. එකතු කිරීමට මම යෝජනා කරමි -sha256.
cherouvim

5
ඔබට දැන් විධාන රේඛාවේ SAN නියම කළ -extension 'subjectAltName = DNS:dom.ain, DNS:oth.er'හැකිය github.com/openssl/openssl/pull/4986
ඇලෙක්සැන්ඩර් ඩුබ්‍රෙවිල්

2
මෙම විකල්පය දැන් හැඳින්වෙන බව පෙනේ -addext.
ඇලෙක්සැන්ඩර් සරුබ්කින්

68

SHA-2 හැෂ් ඇල්ගොරිතම භාවිතා කිරීම සඳහා -sha256 පරාමිතිය එක් කිරීමට මම නිර්දේශ කරමි , මන්ද ප්‍රධාන බ්‍රව්සර් "SHA-1 සහතික" ආරක්ෂිත නොවන බව පෙන්වීමට සලකා බලයි.

පිළිගත් පිළිතුරෙන් එකම විධාන රේඛාව - -dhagows එකතු කළ -ෂා 256 සමඟ

openssl req -x509 -sha256 -newkey rsa: 2048 -keyout key.pem -out cert.pem -days XXX

ගූගල් ආරක්ෂණ බ්ලොග් අඩවියේ වැඩි විස්තර .

යාවත්කාලීන කිරීම 2018 මැයි. බොහෝ දෙනා අදහස් දැක්වීම්වල සඳහන් කර ඇති පරිදි SHA-2 භාවිතා කිරීම ස්වයං අත්සන් කළ සහතිකයකට කිසිදු ආරක්ෂාවක් එක් නොකරයි. නමුත් යල් පැන ගිය / අනාරක්ෂිත ගුප්ත ලේඛන හැෂ් ශ්‍රිත භාවිතා නොකිරීම හොඳ පුරුද්දක් ලෙස මම තවමත් නිර්දේශ කරමි. සම්පූර්ණ පැහැදිලි කිරීමක් ලබා ගත හැකිය. අවසාන ආයතන සහතිකයට ඉහළින් ඇති සහතික SHA-1 පදනම් කර ගැනීම සුදුසු ඇයි? .


1
එය ස්වයං අත්සන් ප්රධාන වේ නම්, එය කෙසේ හෝ බ්රවුසරය වැරදි උත්පාදනය කිරීමට යන්නේ, ඒ නිසා මෙම ඇත්තටම ප්රශ්නයක් නොවේ
මාක්

30
Ark මාක්, එය වැදගත් ය, මන්ද SHA-2 වඩා ආරක්ෂිත බැවින්
මාරිස් බී.

1
Cert.pem ට cert.cer ලෙස නම් කිරීමෙන් පසු සහතිකය කවුළුවලින් විවෘත කිරීමෙන් ඇඟිලි සලකුණු ඇල්ගොරිතම තවමත් Sha1 වන නමුත් අත්සන හැෂ් ඇල්ගොරිතම sha256 වේ.
පව් කළා

2
"ලෝක මට්ටමේ සංකේතනය * ශුන්‍ය සත්‍යාපනය = ශුන්‍ය ආරක්ෂාව" gerv.net/security/self-signed-certs
x-yuri

4
ස්වයං අත්සන් කරන ලද සහතිකයක් මත භාවිතා කරන අත්සන ඇල්ගොරිතම එය විශ්වාසදායකද නැද්ද යන්න තීරණය කිරීමේදී අදාළ නොවේ. Root CA සහතික ස්වයං අත්සන් කර ඇත. සහ 2018 මැයි මස වන විට, SHA-1 අත්සන් කර ඇති බොහෝ ක්‍රියාකාරී root CA සහතික තවමත් තිබේ. සහතිකයක් විශ්වාස කරන්නේ නම් හෝ එම සහතිකය එම විශ්වාසය තහවුරු කරන්නේ කෙසේද යන්න ගැටළුවක් නොවන බැවිනි. මූල / ස්වයං අත්සන් කළ සහතිකය එය කවුරුන්දැයි ඔබ විශ්වාස කරයි , නැතහොත් ඔබ විශ්වාස නොකරයි. බලන්න security.stackexchange.com/questions/91913/...
ඇන්ඩෲ Henle

20

ස්වයං අත්සන් කළ සහතිකවල SAN (subjectAltName) සැකසීමට මම දේශීය පෙට්ටිවල භාවිතා කරන පිටපත මෙයයි.

මෙම ස්ක්‍රිප්ට් ඩොමේන් නාමය (example.com) ගෙන එකම සහතිකයෙන් * .example.com සහ example.com සඳහා SAN ජනනය කරයි. පහත දැක්වෙන කොටස් අදහස් දක්වා ඇත. ස්ක්‍රිප්ට් (උදා generate-ssl.sh) නම් කර එය ක්‍රියාත්මක කළ හැකි අවසර ලබා දෙන්න. ලිපිගොනු ස්ක්‍රිප්ටයේ එකම ඩිරෙක්ටරියට ලියා ඇත.

ක්‍රෝම් 58 ඉදිරියට ස්වයංක්‍රීයව අත්සන් කළ සහතිකවල SAN සැකසිය යුතුය.

#!/usr/bin/env bash

# Set the TLD domain we want to use
BASE_DOMAIN="example.com"

# Days for the cert to live
DAYS=1095

# A blank passphrase
PASSPHRASE=""

# Generated configuration file
CONFIG_FILE="config.txt"

cat > $CONFIG_FILE <<-EOF
[req]
default_bits = 2048
prompt = no
default_md = sha256
x509_extensions = v3_req
distinguished_name = dn

[dn]
C = CA
ST = BC
L = Vancouver
O = Example Corp
OU = Testing Domain
emailAddress = webmaster@$BASE_DOMAIN
CN = $BASE_DOMAIN

[v3_req]
subjectAltName = @alt_names

[alt_names]
DNS.1 = *.$BASE_DOMAIN
DNS.2 = $BASE_DOMAIN
EOF

# The file name can be anything
FILE_NAME="$BASE_DOMAIN"

# Remove previous keys
echo "Removing existing certs like $FILE_NAME.*"
chmod 770 $FILE_NAME.*
rm $FILE_NAME.*

echo "Generating certs for $BASE_DOMAIN"

# Generate our Private Key, CSR and Certificate
# Use SHA-2 as SHA-1 is unsupported from Jan 1, 2017

openssl req -new -x509 -newkey rsa:2048 -sha256 -nodes -keyout "$FILE_NAME.key" -days $DAYS -out "$FILE_NAME.crt" -passin pass:$PASSPHRASE -config "$CONFIG_FILE"

# OPTIONAL - write an info to see the details of the generated crt
openssl x509 -noout -fingerprint -text < "$FILE_NAME.crt" > "$FILE_NAME.info"

# Protect the key
chmod 400 "$FILE_NAME.key"

මෙම ස්ක්‍රිප්ට් එක ද තොරතුරු ගොනුවක් ලියයි, එබැවින් ඔබට නව සහතිකය පරීක්ෂා කර SAN නිසියාකාරව සකසා ඇත්දැයි තහවුරු කර ගත හැකිය.

                ...
                28:dd:b8:1e:34:b5:b1:44:1a:60:6d:e3:3c:5a:c4:
                da:3d
            Exponent: 65537 (0x10001)
    X509v3 extensions:
        X509v3 Subject Alternative Name: 
            DNS:*.example.com, DNS:example.com
Signature Algorithm: sha256WithRSAEncryption
     3b:35:5a:d6:9e:92:4f:fc:f4:f4:87:78:cd:c7:8d:cd:8c:cc:
     ...

ඔබ Apache භාවිතා කරන්නේ නම්, ඉහත සඳහන් සහතිකය ඔබේ වින්‍යාස ගොනුවේ සඳහන් කළ හැකිය:

<VirtualHost _default_:443>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/htdocs

    SSLEngine on
    SSLCertificateFile path/to/your/example.com.crt
    SSLCertificateKeyFile path/to/your/example.com.key
</VirtualHost>

නව සහතිකය බලාත්මක වීම සඳහා ඔබේ Apache (හෝ Nginx, හෝ IIS) සේවාදායකය නැවත ආරම්භ කිරීමට මතක තබා ගන්න.


මැකෝස් හයි සියෙරා සහ ක්‍රෝම් 58 හි වැඩ කරයි
සාකිබ් ඔමර්

සීඑන් සමස්ත සැකසුම කෙරෙහි බලපාන්නේ කෙසේදැයි මට තවමත් විශ්වාස නැත? මම මෙය ක්‍රියාත්මක කිරීමට උත්සාහ කරන්නේ localhostහෝ මේ වගේ දෙයකට 127.0.0.1:port#අනුරූප CNවන්නේ කුමක් ද යන්නයි.
DJ2

DJ2 මම BASE_DOMAIN = "පෙදෙසි සත්කාරකයෙන්" සකස් කරනු ඇත @
Drakes

9

2017 එක් ලයිනර්:

openssl req \
-newkey rsa:2048 \
-x509 \
-nodes \
-keyout server.pem \
-new \
-out server.pem \
-subj /CN=localhost \
-reqexts SAN \
-extensions SAN \
-config <(cat /System/Library/OpenSSL/openssl.cnf \
    <(printf '[SAN]\nsubjectAltName=DNS:localhost')) \
-sha256 \
-days 3650

මෙය වෙනත් වින්‍යාස ගොනුවක් නොමැතිව SAN සපයන පරිදි ක්‍රෝම් 57 හි ද ක්‍රියා කරයි. එය මෙහි පිළිතුරකින් ලබාගෙන ඇත .

මෙය පුද්ගලික යතුර සහ සහතිකය යන දෙකම අඩංගු තනි .pem ගොනුවක් නිර්මාණය කරයි. අවශ්‍ය නම් .pem ගොනු වෙන් කිරීමට ඔබට ඒවා ගෙන යා හැකිය.


2
ලිනක්ස් භාවිතා කරන්නන් සඳහා ඔබ වින්‍යාසය සඳහා එම මාර්ගය වෙනස් කළ යුතුය. උදා: වත්මන් උබුන්ටු /etc/ssl/openssl.confවැඩ
පරිහානිය

: එක් නෞකාවක් බලන්න, openssl.cnf ස්ථානය නියම කිරීමට ඔබ අවශ්ය නොවේ ඒ සඳහා stackoverflow.com/a/41366949/19163
vog

8

මට අදහස් දැක්විය නොහැක, එබැවින් මම වෙනම පිළිතුරක් එක් කරමි. මම NGINX සඳහා ස්වයං අත්සන් කළ සහතිකයක් නිර්මාණය කිරීමට උත්සාහ කළ අතර එය පහසුය, නමුත් මට එය Chrome සුදු ලැයිස්තුවට එක් කිරීමට අවශ්‍ය වූ විට මට ගැටලුවක් ඇති විය. මගේ විසඳුම වූයේ මූල සහතිකයක් නිර්මාණය කිරීම සහ ඒ මගින් ළමා සහතිකයක් අත්සන් කිරීමයි.

එබැවින් පියවරෙන් පියවර. ගොනුව නිර්මාණය config_ssl_ca.cnf දැන්වීම, සුසර කිරීමේ ගොනුව විකල්පයක් ඇත basicConstraints = CA: සැබෑ අර්ථය ඇති මෙම සහතිකය මූල වෙන්න තිබුනේ කර ඇති බවට ය.

මෙය හොඳ පුරුද්දකි, මන්ද ඔබ එය එක් වරක් නිර්මාණය කර නැවත භාවිතා කළ හැකිය.

[ req ]
default_bits = 2048

prompt = no
distinguished_name=req_distinguished_name
req_extensions = v3_req

[ req_distinguished_name ]
countryName=UA
stateOrProvinceName=root region
localityName=root city
organizationName=root organisation
organizationalUnitName=roote department
commonName=root
emailAddress=root_email@root.localhost

[ alternate_names ]
DNS.1        = market.localhost
DNS.2        = www.market.localhost
DNS.3        = mail.market.localhost
DNS.4        = ftp.market.localhost

[ v3_req ]
keyUsage=digitalSignature
basicConstraints=CA:true
subjectKeyIdentifier = hash
subjectAltName = @alternate_names

ඔබගේ ළමා සහතිකය සඳහා ඊළඟ වින්‍යාස ගොනුව.

[ req ]
default_bits = 2048

prompt = no
distinguished_name=req_distinguished_name
req_extensions = v3_req

[ req_distinguished_name ]
countryName=UA
stateOrProvinceName=Kyiv region
localityName=Kyiv
organizationName=market place
organizationalUnitName=market place department
commonName=FirstName LastName
emailAddress=email@market.localhost

[ alternate_names ]
DNS.1        = market.localhost
DNS.2        = www.market.localhost
DNS.3        = mail.market.localhost
DNS.4        = ftp.market.localhost

[ v3_req ]
keyUsage=digitalSignature
basicConstraints=CA:false
subjectAltName = @alternate_names
subjectKeyIdentifier = hash

පළමු පියවර - මූල යතුර සහ සහතිකය සාදන්න

openssl genrsa -out ca.key 2048
openssl req -new -x509 -key ca.key -out ca.crt -days 365 -config config_ssl_ca.cnf

දෙවන පියවර ළමා යතුර නිර්මාණය කර CSR - සහතික අත්සන් කිරීමේ ඉල්ලීම ගොනු කරන්න. මන්ද යත් ළමා සහතිකය root මගින් අත්සන් කර නිවැරදි සහතිකයක් ලබා ගැනීමයි

openssl genrsa -out market.key 2048
openssl req -new -sha256 -key market.key -config config_ssl.cnf -out market.csr

ලිනක්ස් පර්යන්තය විවෘත කර මෙම විධානය echo 0 කරන්න

echo 1 > ca.srl
touch index.txt

මෙම ca.srl hex භාවිතා කිරීමට ඉදිරි අනුක්රමික අංකය අඩංගු පෙළ ගොනුවක්. අනිවාර්යයි. මෙම ගොනුව තිබිය යුතු අතර වලංගු අනුක්‍රමික අංකයක් අඩංගු විය යුතුය.

අවසාන පියවර, තවත් එක් වින්‍යාස ගොනුවක් කූඩයට දමා config_ca.cnf ලෙස අමතන්න

# we use 'ca' as the default section because we're usign the ca command
[ ca ]
default_ca = my_ca

[ my_ca ]
#  a text file containing the next serial number to use in hex. Mandatory.
#  This file must be present and contain a valid serial number.
serial = ./ca.srl

# the text database file to use. Mandatory. This file must be present though
# initially it will be empty.
database = ./index.txt

# specifies the directory where new certificates will be placed. Mandatory.
new_certs_dir = ./

# the file containing the CA certificate. Mandatory
certificate = ./ca.crt

# the file contaning the CA private key. Mandatory
private_key = ./ca.key

# the message digest algorithm. Remember to not use MD5
default_md = sha256

# for how many days will the signed certificate be valid
default_days = 365

# a section with a set of variables corresponding to DN fields
policy = my_policy

# MOST IMPORTANT PART OF THIS CONFIG
copy_extensions = copy

[ my_policy ]
# if the value is "match" then the field value must match the same field in the
# CA certificate. If the value is "supplied" then it must be present.
# Optional means it may be present. Any fields not mentioned are silently
# deleted.
countryName = match
stateOrProvinceName = supplied
organizationName = supplied
commonName = supplied
organizationalUnitName = optional
commonName = supplied

ළමා සහතිකය root මගින් අත්සන් කිරීම සඳහා අප තවත් එක් වින්‍යාසයක් නිර්මාණය කළ යුත්තේ මන්දැයි ඔබට ඇසිය හැකිය. ළමා සහතිකයට SAN බ්ලොක් එකක් තිබිය යුතු බැවින් පිළිතුර සරල ය - විෂය විකල්ප නම්. අපි ළමා සහතිකය "openssl x509" භාවිතයෙන් අත්සන් කළහොත්, Root සහතිකය ළමා සහතිකයේ SAN ක්ෂේත්‍රය මකා දමනු ඇත. එබැවින් අපි SAN ක්ෂේත්‍රය මකා දැමීම වළක්වා ගැනීම සඳහා "openssl x509" වෙනුවට "openssl ca" භාවිතා කරමු. අපි නව වින්‍යාස ගොනුවක් සාදන අතර එය දීර් extended කරන ලද සියලුම ක්ෂේත්‍ර පිටපත් කිරීමට කියමු copy_extensions = copy .

openssl ca -config config_ca.cnf -out market.crt -in market.csr

වැඩසටහන ඔබෙන් ප්‍රශ්න 2 ක් අසයි: 1. සහතිකය අත්සන් කරන්න? "Y" කියන්න 2. සහතික කළ ඉල්ලීම් 1 න් 1 ක්ම සහතික කර තිබේද? "වයි" කියන්න

ටර්මිනලයේ ඔබට "දත්ත සමුදාය" යන වචනය සහිත වාක්‍යයක් දැකිය හැකිය, එයින් අදහස් වන්නේ "touch" විධානය මඟින් ඔබ විසින් සාදන ලද index index.txt ගොනුවයි. "Opensl ca" උපයෝගීතාවයෙන් ඔබ නිර්මාණය කරන සියලුම සහතික වල සියලුම තොරතුරු එහි අඩංගු වේ. සහතිකය වලංගු භාවිතය පරීක්ෂා කිරීම සඳහා:

openssl rsa -in market.key -check

CRT හි ඇති දේ බැලීමට ඔබට අවශ්‍ය නම්:

openssl x509 -in market.crt -text -noout

ආයතනික සමාජ වගකීම් තුළ ඇති දේ බැලීමට ඔබට අවශ්‍ය නම්:

openssl req -in market.csr -noout -text 

2
මෙම ක්‍රියාවලිය සංකීර්ණ බවක් පෙනුනද, .dev වසම සඳහා අපට අවශ්‍ය වන්නේ මෙයයි, මන්ද මෙම වසම ස්වයං අත්සන් කළ සහතික සඳහා සහය නොදක්වන අතර ක්‍රෝම් සහ ෆයර්ෆොක්ස් HSTS සඳහා බල කරයි. මා කළේ මෙම පියවරයන් අනුගමනය කිරීමයි, එය CA නිර්මාණය කිරීම, සහතිකයක් නිර්මාණය කිරීම සහ එය මගේ CA සමඟ අත්සන් කිරීම සහ අවසානයේදී බ්‍රවුසරයේ මගේ CA විශ්වාස කිරීම ය. ස්තූතියි.
bajicdusko

7

එක්-ලයිනර් අනුවාදය 2017:

CentOS:

openssl req -x509 -nodes -sha256 -newkey rsa:2048 \
-keyout localhost.key -out localhost.crt \
-days 3650 \
-subj "CN=localhost" \
-reqexts SAN -extensions SAN \
-config <(cat /etc/pki/tls/openssl.cnf <(printf "\n[SAN]\nsubjectAltName=IP:127.0.0.1,DNS:localhost"))

උබුන්ටු:

openssl req -x509 -nodes -sha256 -newkey rsa:2048 \
-keyout localhost.key -out localhost.crt \
-days 3650 \
-subj "/CN=localhost" \
-reqexts SAN -extensions SAN \
-config <(cat /etc/ssl/openssl.cnf <(printf "\n[SAN]\nsubjectAltName=IP:127.0.0.1,DNS:localhost"))

සංස්කරණය කරන්න: උබුන්ටු සඳහා 'subj' විකල්පයට පෙර සූදානම එකතු කරන ලදි.


6

ඔබට සාමාන්‍ය ක්‍රියා පටිපාටිය නිවැරදි ය. විධානය සඳහා වාක්‍ය ඛණ්ඩය පහතින්.

openssl req -new -key {private key file} -out {output file}

කෙසේ වෙතත්, අනතුරු ඇඟවීම් දර්ශනය වේ, මන්ද බ්‍රවුසරයට දන්නා සහතික අධිකාරියක් (CA) සමඟ සහතිකය වලංගු කිරීමෙන් අනන්‍යතාවය සත්‍යාපනය කිරීමට නොහැකි විය.

මෙය ස්වයං අත්සන සහතිකයක් බැවින් CA එකක් නොමැති අතර ඔබට අනතුරු ඇඟවීම නොසලකා හැර ඉදිරියට යා හැකිය. පොදු අන්තර්ජාලයේ ඕනෑම කෙනෙකුට හඳුනාගත හැකි සත්‍ය සහතිකයක් ලබා ගැනීමට ඔබට අවශ්‍ය නම් ක්‍රියා පටිපාටිය පහතින්.

  1. පුද්ගලික යතුරක් ජනනය කරන්න
  2. CSR ගොනුවක් සෑදීමට එම පුද්ගලික යතුර භාවිතා කරන්න
  3. CSR වෙත CAR ඉදිරිපත් කරන්න (Verisign හෝ වෙනත් අය)
  4. CA වෙතින් ලැබුණු සහතිකය වෙබ් සේවාදායකයේ ස්ථාපනය කරන්න
  5. සහතික වර්ගය අනුව සත්‍යාපන දාමයට වෙනත් සහතික එකතු කරන්න

සම්බන්ධතාවය සුරක්ෂිත කිරීම: OpenSSL සමඟ ආරක්ෂක සහතිකයක් නිර්මාණය කිරීම යන ලිපියේ මේ ගැන වැඩි විස්තර මා සතුව ඇත


6

එක් ලයිනර් FTW. මම එය සරලව තබා ගැනීමට කැමතියි. අවශ්‍ය සියලු තර්ක අඩංගු එක් විධානයක් භාවිතා නොකරන්නේ ඇයි? මම කැමති ආකාරයට මෙයයි - මෙය x509 සහතිකයක් සහ එහි PEM යතුර නිර්මාණය කරයි:

openssl req -x509 \
 -nodes -days 365 -newkey rsa:4096 \
 -keyout self.key.pem \
 -out self-x509.crt \
 -subj "/C=US/ST=WA/L=Seattle/CN=example.com/emailAddress=someEmail@gmail.com"

සහතික විස්තර සඳහා ඔබ සාමාන්‍යයෙන් සපයන සියලුම පිළිතුරු එම තනි විධානයෙහි අඩංගු වේ. මේ ආකාරයෙන් ඔබට පරාමිතීන් සකසා විධානය ක්‍රියාත්මක කළ හැකිය, ඔබේ ප්‍රතිදානය ලබා ගන්න - ඉන්පසු කෝපි සඳහා යන්න.

>> තවත් මෙහි <<


1
SAN හැර සෙසු සියලුම තර්ක ... @ වෝග්ගේ පිළිතුරෙන් ද එය ආවරණය කරයි (සහ ඊට පෙර) (මෙය වඩාත් සම්පූර්ණ "විෂය" ක්ෂේත්‍රයක් පුරවා ඇත ...) (වසරක කල් ඉකුත්වීමේ විශාල රසිකයෙක් ද නොවේ)
ගර්ට් වැන් ඩෙන් බර්ග්

3

යතුරු ජනනය කරන්න

අඩංගු /etc/mysqlබැවින් මම සහතික ගබඩා කිරීම සඳහා භාවිතා කරමි ./etc/apparmor.d/usr.sbin.mysqld/etc/mysql/*.pem r

sudo su -
cd /etc/mysql
openssl genrsa -out ca-key.pem 2048;
openssl req -new -x509 -nodes -days 1000 -key ca-key.pem -out ca-cert.pem;
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout server-key.pem -out server-req.pem;
openssl x509 -req -in server-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem;
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout client-key.pem -out client-req.pem;
openssl x509 -req -in client-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem;

වින්‍යාසය එක් කරන්න

/etc/mysql/my.cnf

[client]
ssl-ca=/etc/mysql/ca-cert.pem
ssl-cert=/etc/mysql/client-cert.pem
ssl-key=/etc/mysql/client-key.pem

[mysqld]
ssl-ca=/etc/mysql/ca-cert.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem

මගේ සැකසුම මත, උබුන්ටු සේවාදායකය වෙත පිවිසී ඇත්තේ: /var/log/mysql/error.log

පසු විපරම් සටහන්:

  • SSL error: Unable to get certificate from '...'

    MySQL ඔබේ සහතික ගොනුව වෙත පිවිසීමේ වින්‍යාසය නොමැති නම් එය කියවීම ප්‍රතික්ෂේප කරනු ඇත . පෙර පියවරයන්හි සඳහන් කර ඇති පරිදි, අපගේ සහතික සියල්ලම පෙරනිමියෙන් අනුමත කරන ලද නාමාවලියෙහි .pemගොනු ලෙස /etc/mysql/සුරකින්න (හෝ ඔබ ඒවා ගබඩා කළ ඕනෑම තැනකට ප්‍රවේශ වීමට ඉඩ දීම සඳහා ඔබේ ඇපර්මෝර් / සෙලිනක්ස් වෙනස් කරන්න.)

  • SSL error: Unable to get private key

    ඔබගේ MySQL සේවාදායක අනුවාදය පෙරනිමි rsa:2048ආකෘතියට සහය නොදක්වයි

    ජනනය rsa:2048කළේ සරල ලෙස පරිවර්තනය කරන්න rsa:

    openssl rsa -in server-key.pem -out server-key.pem
    openssl rsa -in client-key.pem -out client-key.pem
    
  • දේශීය සේවාදායකය SSL සඳහා සහය දක්වයිදැයි පරීක්ෂා කරන්න :

    mysql -u root -p
    mysql> show variables like "%ssl%";
    +---------------+----------------------------+
    | Variable_name | Value                      |
    +---------------+----------------------------+
    | have_openssl  | YES                        |
    | have_ssl      | YES                        |
    | ssl_ca        | /etc/mysql/ca-cert.pem     |
    | ssl_capath    |                            |
    | ssl_cert      | /etc/mysql/server-cert.pem |
    | ssl_cipher    |                            |
    | ssl_key       | /etc/mysql/server-key.pem  |
    +---------------+----------------------------+
    
  • දත්ත සමුදායට සම්බන්ධතාවයක් සත්‍යාපනය කිරීම SSL සංකේතනය කර ඇත :

    සම්බන්ධතාවය සත්‍යාපනය කිරීම

    MySQL නිදසුන වෙත ප්‍රවිෂ්ට වූ විට, ඔබට විමසුම නිකුත් කළ හැකිය:

    show status like 'Ssl_cipher';
    

    ඔබගේ සම්බන්ධතාවය සංකේතනය කර නොමැති නම්, ප්‍රති result ලය හිස් වනු ඇත:

    mysql> show status like 'Ssl_cipher';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | Ssl_cipher    |       |
    +---------------+-------+
    1 row in set (0.00 sec)
    

    එසේ නොමැති නම්, එය භාවිතයේ ඇති සයිෆර් සඳහා ශුන්‍ය නොවන දිග නූලක් පෙන්වයි:

    mysql> show status like 'Ssl_cipher';
    +---------------+--------------------+
    | Variable_name | Value              |
    +---------------+--------------------+
    | Ssl_cipher    | DHE-RSA-AES256-SHA |
    +---------------+--------------------+
    1 row in set (0.00 sec)
    
  • විශේෂිත පරිශීලක සම්බන්ධතාවය සඳහා ssl අවශ්‍ය වේ ('ssl අවශ්‍යයි'):

    • එස්එස්එල්

    ගිණුම සඳහා SSL- සංකේතාත්මක සම්බන්ධතා පමණක් අවසර දෙන ලෙස සේවාදායකයාට පවසයි.

    GRANT ALL PRIVILEGES ON test.* TO 'root'@'localhost'
      REQUIRE SSL;
    

    සම්බන්ධ වීමට, සේවාදායකයා සහතිකය සත්‍යාපනය කිරීම සඳහා --ssl-ca විකල්පය සඳහන් කළ යුතු අතර, ඊට අමතරව --ssl-key සහ --ssl-cert විකල්පයන් නියම කළ හැකිය. --Sl-ca විකල්පය හෝ --ssl-capath විකල්පය නිශ්චිතව දක්වා නොමැති නම්, සේවාදායකයා සේවාදායක සහතිකය සත්‍යාපනය නොකරයි.


විකල්ප සබැඳිය: SSL සමඟ MySQL වෙත ආරක්ෂිත PHP සම්බන්ධතා වල දීර් t නිබන්ධනය .


-1; මෙය බොහෝ දුරට අසන ලද ප්‍රශ්නයට ස්පර්ශ වන අතර එහි උපුටා දැක්වීම් කොහෙන්ද යන්න පැහැදිලි කිරීමේ නරක කාර්යයක්ද කරයි.
මාර්ක් අමරි

මෙයින් පෙන්නුම් කරන්නේ CA විසින් අත්සන් කරන ලද CA, Server / Client සහතික, ඒවා mysqld විසින් කියවීම සඳහා වින්‍යාසගත කර ඇති ධාරකයක කියවීම සඳහා වින්‍යාස කිරීමයි. Ca, සේවාදායකයා සහ සේවාදායකයා එකම යන්ත්‍රයක සත්කාරකත්වය සැපයීම සහ එම ca හි අධිකාරය mysqld ක්‍රියාවලියට භයානක ලෙස නිරාවරණය කිරීම පිළිබඳ තරමක් නිෂ් less ල අවස්ථාවක් එය නිදර්ශනය කරයි. පරීක්ෂණ පරිසරයක ssl වින්‍යාසය පරීක්ෂා කිරීම හැරෙන්නට මෙම සැකසුම සැබවින්ම අර්ථවත් නොවේ. අභ්‍යන්තර වරලත් ගණකාධිකාරී මෙහෙයුම් පද්ධතියක් සඳහා, මම නිර්දේශ කරමි opensl help.ubuntu.com/community/GnuTLS හරහා gnuttls මෙවලම් කට්ටලය සහ mysqld + apparmor නඩුව වටා වැඩ කිරීමට පෙර tls පිළිබඳ මනා අවබෝධයක් තිබීම
ThorSummoner

3

විස්තරාත්මකව සාකච්ඡා කර ඇති පරිදි, ස්වයං අත්සන් කළ සහතික අන්තර්ජාලය සඳහා විශ්වාසදායක නොවේ . ඔබගේ ස්වයං අත්සන් සහතිකය බොහෝ බ්‍රව්සර් වලට එකතු කළ හැකිය . විකල්පයක් ලෙස ඔබට ඔබේම සහතික අධිකාරියක් බවට පත්විය හැකිය .

සහතික අධිකාරියකින් අත්සන් කළ සහතිකයක් ලබා ගැනීමට කෙනෙකුට අවශ්‍ය නොවීමට මූලික හේතුව පිරිවැය - සහතික සඳහා සිමෙන්ටෙක් ගාස්තු වසරකට ඩොලර් 995 සිට ඩොලර් 1,999 දක්වා - අභ්‍යන්තර ජාලය සඳහා අදහස් කරන සහතිකයක් සඳහා, සිමෙන්ටෙක් වසරකට ඩොලර් 399 ක් අය කරයි. කරයි. ඔබ ක්‍රෙඩිට් කාඩ් ගෙවීම් සැකසෙන්නේ නම් හෝ ඉහළ ලාභ ලබන සමාගමක ලාභ මධ්‍යස්ථානය සඳහා වැඩ කරන්නේ නම් එම පිරිවැය සාධාරණීකරණය කිරීම පහසුය. එය අන්තර්ජාලය තුළ නිර්මාණය වන පුද්ගලික ව්‍යාපෘතියක් සඳහා හෝ අවම අයවැයකින් ලාභ නොලබන ව්‍යාපාරයක් සඳහා හෝ ආයතනයක පිරිවැය මධ්‍යස්ථානයක වැඩ කරන්නේ නම් - පිරිවැය මධ්‍යස්ථාන සෑම විටම වැඩි යමක් කිරීමට උත්සාහ කරයි අඩුවෙන්.

විකල්පයක් වන්නේ certbot භාවිතා කිරීමයි ( certbot ගැන බලන්න ). Certbot යනු ඔබේ වෙබ් සේවාදායකය සඳහා SSL / TLS සහතික ලබා ගැනීමට සහ යෙදවීමට පහසු ස්වයංක්‍රීය සේවාදායකයෙකි.

ඔබ සහතික පත්‍රය සකසන්නේ නම්, අපි සහතික කිරීමේ අධිකාරිය විසින් නිකුත් කරන ලද සහතිකයක් නිර්මාණය කර නඩත්තු කිරීමට ඔබට එය සක්‍රීය කළ හැකිය .

මගේ සංවිධානය වෙනුවෙන් සති අන්තයේ මම මෙය කළෙමි. මම සර්ට්බෝට් සඳහා අවශ්‍ය පැකේජ මගේ සේවාදායකයේ ස්ථාපනය කර ඇත (උබුන්ටු 16.04) පසුව සර්ට්බෝට් සැකසීමට සහ සක්‍රීය කිරීමට අවශ්‍ය විධානය ක්‍රියාත්මක කළෙමි. කෙනෙකුට සර්ට්බෝට් සඳහා ඩීඑන්එස් ප්ලගිනයක් අවශ්‍ය විය හැකිය - අපි දැනට ඩිජිටල් ඕෂන් භාවිතා කරන නමුත් ඉක්මනින් වෙනත් සේවාවක් වෙත සංක්‍රමණය වීමට ඉඩ ඇත.

සමහර උපදෙස් නිවැරදි නොවන බවත්, ගූගල් සමඟ මදක් විමසිල්ලෙන් හා කාලය ගත කළ බවත් සලකන්න. මෙය පළමු වරට මගේ කාලය සෑහෙන ප්‍රමාණයක් ගත කළ නමුත් දැන් මම සිතන්නේ මිනිත්තු කිහිපයකින් එය කළ හැකි බවයි.

ඩිජිටල් ඕෂන් සඳහා, ඔබේ ඩිජිටල් ඕෂන් අක්තපත්‍ර INI ගොනුව වෙත මාවත ඇතුළත් කිරීමට මාගෙන් විමසූ විට මා අරගල කළ එක් අංශයක් විය. ස්ක්‍රිප්ට් එකෙන් අදහස් කරන්නේ යෙදුම් සහ ඒපීඅයි පිටුව සහ එම පිටුවේ ඇති ටෝකන / යතුරු පටිත්තයි. ඩිජිටල් ඕෂන් ඒපීඅයි සඳහා ඔබට පුද්ගලික ප්‍රවේශ ටෝකනයක් (කියවීමට හා ලිවීමට) අවශ්‍ය වේ - මෙය අක්ෂර 65 ක ෂඩාස්රාකාර නූලකි. මෙම නූල පසුව ඔබ සර්ට්බෝට් ධාවනය කරන වෙබ් සේවාදායකයේ ගොනුවකට දැමිය යුතුය. එම ගොනුවට එහි පළමු පේළිය ලෙස අදහස් දැක්විය හැකිය (අදහස් # වලින් ආරම්භ වේ). තත්පර රේඛාව:

dns_digitalocean_token = 0000111122223333444455556666777788889999aaaabbbbccccddddeeeeffff

ඩිජිටල් ඕෂන් ඒපීඅයි සඳහා කියවීමේ + ලිවීමේ ටෝකනයක් සකසන්නේ කෙසේදැයි මම සොයාගත් පසු, ආදේශක කාඩ්පත් සහතිකයක් සැකසීමට සර්ට්බෝට් භාවිතා කිරීම පහසුය . යමෙකුට ආදේශක සහතිකයක් සැකසීමට අවශ්‍ය නොවන බව සලකන්න, ඒ වෙනුවට සහතිකය අයදුම් කිරීමට අවශ්‍ය එක් එක් වසම සහ උප වසම නියම කළ හැකිය. ඩිජිටල් ඕෂන් වෙතින් පුද්ගලික ප්‍රවේශ ටෝකනය අඩංගු අක්තපත්‍ර INI ගොනුව අවශ්‍ය වූයේ ආදේශක සහතිකයයි.

පොදු යතුරු සහතික (හැඳුනුම්පත් හෝ එස්එස්එල් සහතික ලෙසද හැඳින්වේ) කල් ඉකුත් වන අතර අලුත් කිරීම අවශ්‍ය බව සලකන්න. මේ අනුව ඔබට වරින් වර (නැවත සැකසීමේ) පදනම මත ඔබේ සහතිකය අලුත් කිරීමට අවශ්‍ය වනු ඇත. සහතික කිරීමේ ලේඛනය අළුත් කිරීමේ සහතික ආවරණය කරයි .

මගේ සැලසුම වන්නේ මගේ සහතිකයේ කල් ඉකුත්වීමේ දිනය ලබා ගැනීම සඳහා openssl විධානය භාවිතා කිරීම සඳහා පිටපතක් ලිවීම සහ එය කල් ඉකුත්වන තෙක් දින 30 ක් හෝ ඊට අඩු වූ විට අලුත් කිරීම අවුලුවාලීමයි. මම පසුව මෙම ස්ක්‍රිප්ට් එක ක්‍රෝන් එකට එකතු කර දිනකට එක් වරක් ධාවනය කරමි.

ඔබගේ සහතිකයේ කල් ඉකුත් වීමේ දිනය කියවීමේ විධානය මෙන්න:

root@prod-host:~# /usr/bin/openssl x509 -enddate -noout -in path-to-certificate-pem-file
notAfter=May 25 19:24:12 2019 GMT
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.