මට යමක් මග හැරී තිබේද? ස්වයං අත්සන් කළ සහතිකයක් තැනීමට මෙය නිවැරදි ක්රමයද?
ස්වයං අත්සන් කළ සහතිකයක් සෑදීම පහසුය. ඔබ openssl req
විධානය භාවිතා කරන්න . බ්රව්සර් සහ විධාන රේඛා මෙවලම් වැනි විශාලතම සේවාදායකයින් විසින් පරිභෝජනය කළ හැකි එකක් නිර්මාණය කිරීම උපක්රමශීලී විය හැකිය.
බ්රව්සර් වලට ඔවුන්ගේම අවශ්යතා සමූහයක් ඇති බැවින් එය දුෂ්කර වන අතර ඒවා IETF වලට වඩා සීමා කර ඇත. බ්රව්සර් භාවිතා කරන අවශ්යතා CA / බ්රව්සර් සංසදවල ලේඛනගත කර ඇත (පහත යොමු බලන්න). ප්රධාන අංශ දෙකක සීමාවන් පැන නගී: (1) විශ්වාස නැංගුරම් සහ (2) ඩීඑන්එස් නම්.
නවීන බ්රව්සර් (2014/2015 දී අප භාවිතා කරන ගබඩාව වැනි) විශ්වාසදායක නැංගුරමකට නැවත සම්බන්ධ වන සහතිකයක් අවශ්ය වන අතර ඔවුන්ට අවශ්ය වන්නේ ඩීඑන්එස් නම් සහතිකයේ විශේෂිත ආකාරවලින් ඉදිරිපත් කිරීමයි. ස්වයං-අත්සන් කළ සේවාදායක සහතික වලට එරෙහිව බ්රව්සර් ක්රියාකාරීව ගමන් කරයි.
සමහර බ්රව්සර් ස්වයං-අත්සන් කළ සේවාදායක සහතිකයක් ආනයනය කිරීම හරියටම පහසු නොකරයි. ඇත්ත වශයෙන්ම, ඔබට ඇන්ඩ්රොයිඩ් බ්රව්සරය වැනි සමහර බ්රව්සර් සමඟ කළ නොහැක. එබැවින් සම්පූර්ණ විසඳුම ඔබේම අධිකාරිය බවට පත්වීමයි.
ඔබේම අධිකාරියක් බවට පත් නොවූ විට, සහතිකය සාර්ථක වීමට විශාලතම අවස්ථාව ලබා දීම සඳහා ඔබ DNS නම් නිවැරදිව ලබා ගත යුතුය. නමුත් ඔබේම අධිකාරියක් වීමට මම ඔබව දිරිමත් කරමි. ඔබේම අධිකාරියක් බවට පත්වීම පහසු වන අතර, එය සියලු විශ්වාසනීය කාරණා මග හරිනු ඇත (ඔබට වඩා විශ්වාස කිරීමට වඩා හොඳ කවුද?).
මෙය බොහෝ විට ඔබ සොයන වෙබ් අඩවිය නොවේ!
වෙබ් අඩවියේ ආරක්ෂක සහතිකය විශ්වාස නැත!
මෙයට හේතුව සේවාදායක සහතික වලංගු කිරීම සඳහා බ්රව්සර් විශ්වාස කළ හැකි නැංගුරම් ලැයිස්තුවක් භාවිතා කිරීමයි. ස්වයං-අත්සන් කළ සහතිකයක් විශ්වාසදායක නැංගුරමකට නැවත සම්බන්ධ නොවේ.
මෙය වළක්වා ගත හැකි හොඳම ක්රමය නම්:
- ඔබේම අධිකාරියක් සාදන්න (එනම්, CA බවට පත් වන්න )
- සේවාදායකයා සඳහා සහතික අත්සන් කිරීමේ ඉල්ලීමක් (CSR) සාදන්න
- ඔබේ CA යතුර සමඟ සේවාදායකයේ CSR අත්සන් කරන්න
- සේවාදායකයේ සේවාදායක සහතිකය ස්ථාපනය කරන්න
- 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 ලිපිනය ඉඩ ලබා දේ.