Vytváranie a Používanie Certifikátov SSL

Tento dokument popisuje, ako vytvoriť sami ako koreňový certifikačný orgán (root CA) pomocou sady nástrojov OpenSSL. Ako koreňový CA môžete podpísať a nainštalovať certifikáty na použitie vo vašich aplikáciách internetového servera, napríklad Apache a Stunnel.

Obsah

Rozsah

Tento dokument pokrýva veľmi špecifický, obmedzený účel, ale ten, ktorý spĺňa bežnú potrebu: zabrániť prehliadačom, mailom a iným klientom sťažovať sa na certifikáty nainštalované na vašom serveri.
Nezahŕňa sa zaoberá komerčným koreňovým certifikátom (CA). Namiesto toho sa staneme našou vlastnou koreňovou certifikačnou autoritou a podpíšeme naše vlastné certifikáty.

Tieto postupy boli vyvinuté pomocou OpenSSL 0.9.6, 24. 9. 2000, na Linuxe.

Rýchly Śtart

Tí, ktorí chcú okamžite začať vytvárať certifikáty bez toho, aby si prečítali tento celý dokument, by mali preskočiť na zhrnutie na konci.

Pozadie

Prečo je naša vlastná koreňová CA? Aby sme mohli využiť šifrovanie SSL bez toho, aby sme vynaložili zbytočné peniaze na podpísanie našich certifikátov.
Nevýhodou je, že prehliadače budú stále sťažovať na to, že naša stránka nie je dôveryhodná, kým sa neimportuje náš root certifikát. Avšak, akonáhle to bude hotové, nebudeme sa líšiť od komerčných koreňových certifikačných autorít.

Klienti importujú náš koreňový certifikát len vtedy, ak nám dôverujú. Práve tu prichádzajú obchodné certifikačné autority: usilujú sa o rozsiahly výskum ľudí a organizácií, pre ktoré podpisujú certifikáty. Importovaním dôveryhodných koreňových certifikátov (vlastne dodávateľmi prehliadača) hovoríme, že im dôverujeme, keď zaručujú, že niekto iný je ten, o ktorom hovoria, že sú. Môžeme dôverovať ďalším koreňovým certifikačným autoritám (ako my sami) importovaním ich certifikátov CA.

Poznámka: Ak pracujete s prevádzkou komerčne zabezpečenej lokality, získanie komerčne podpísaného certifikátu je jedinou realistickou voľbou.

Predpoklady

Na to budete potrebovať nainštalovanú kópiu OpenSSL, ktorá je k dispozícii na adrese http://www.openssl.org. Je pravdepodobné, že je už nainštalovaný na vašom počítači. Tento dokument nezahŕňa postup inštalácie.

Počiatočné Nastavenie

Najprv vytvoríme adresár, v ktorom môžeme pracovať. Nezáleží na tom, kde to je; Ja to svojvoľne chystám vytvoriť v mojom domovskom adresári.

# mkdir CA
# cd CA
# mkdir newcerts private

Adresár CA bude obsahovať:

  • Certifikát certifikačného orgánu (CA)
  • Databáza certifikátov, ktoré sme podpísali
  • Kľúč, žiadosti a certifikáty, ktoré generujeme

Bude to tiež náš pracovný adresár pri vytváraní alebo podpise certifikátov.

Adresár CA/newcerts bude obsahovať:

  • Kópiu každého certifikátu, ktorý podpíšeme

Adresár CA / privátny adresár bude obsahovať:

  • Náš súkromný kľúč CA

Tento kľúč je dôležitý:

  • Nezabudnite na tento kľúč. Bez nej nebudete môcť podpísať alebo obnoviť žiadne certifikáty.
  • Kľúč neposkytujte nikomu. Ak to bude ohrozené, ostatní vás budú môcť zosobňovať.

Ďalším krokom je vytvorenie databázy certifikátov, ktoré podpíšeme:

# echo '01' >serial
# touch index.txt

Namiesto použitia konfiguračného súboru, ktorý je dodávaný s OpenSSL, vytvoríme v tomto adresári minimálnu vlastnú konfiguráciu. Spustite editor (vi, pico, …) a vytvorte základný openssl.cnf:

---Begin---
#
# OpenSSL configuration file.
#

# Establish working directory.

dir			= .

----End----

Vytvorenie Koreňového Certifikátu

V prípade OpenSSL je veľká časť toho, čo prechádza do certifikátu, a nie na príkazovom riadku. Je to dobrá vec, pretože je tu veľa, čo treba špecifikovať.

Konfiguračný súbor je rozdelený na sekcie, ktoré sa selektívne čítajú a spracovávajú podľa argumentov príkazového riadku openssl. Jednotlivé sekcie môžu obsahovať jednu alebo viaceré ďalšie sekcie, ktoré sa týkajú nich, čo pomáha vytvoriť modulárny konfiguračný súbor. Názov v hranatých zátvorkách (napríklad “[ req ]”) spustí každú sekciu.

Teraz je potrebné pridať sekciu, ktorá riadi spôsob vytvárania certifikátov a časť, ktorá definuje typ certifikátu, ktorý chcete vytvoriť.

Prvá vec, ktorú musíme špecifikovať, je Distinguished Name. Toto je text, ktorý identifikuje vlastníka certifikátu pri jeho prezeraní. Nie je priamo odkazovaný v konfiguračnom súbore, ale je zahrnutý do sekcie spracovanej pri vytváraní žiadostí o certifikát. Príkaz je “openssl req <args>”, takže sekcia je nazvaná [req].

Pridajte do openssl.cnf nasledujúce:

---Begin---

[ req ]
default_bits		= 1024			# Size of keys
default_keyfile		= key.pem		# name of generated keys
default_md		= md5			# message digest algorithm
string_mask		= nombstr		# permitted characters
distinguished_name	= req_distinguished_name

[ req_distinguished_name ]
# Variable name		  Prompt string
#----------------------	  ----------------------------------
0.organizationName	= Organization Name (company)
organizationalUnitName	= Organizational Unit Name (department, division)
emailAddress		= Email Address
emailAddress_max	= 40
localityName		= Locality Name (city, district)
stateOrProvinceName	= State or Province Name (full name)
countryName		= Country Name (2 letter code)
countryName_min		= 2
countryName_max		= 2
commonName		= Common Name (hostname, IP, or your name)
commonName_max		= 64

# Default values for the above, for consistency and less typing.
# Variable name			  Value
#------------------------------	  ------------------------------
0.organizationName_default	= The Sample Company
localityName_default		= Metropolis
stateOrProvinceName_default	= New York
countryName_default		= US

[ v3_ca ]
basicConstraints	= CA:TRUE
subjectKeyIdentifier	= hash
authorityKeyIdentifier	= keyid:always,issuer:always

----End----

Aby sme sa ochránili pred neoprávneným použitím nášho certifikátu CA, je chránený heslom. Pri každom použití certifikátu CA na podpis žiadosti budete vyzvaní na prístupovú frázu. Teraz je vhodný čas vybrať bezpečnú prístupovú frázu a dať ju na bezpečné miesto.

Všetka príprava je teraz na mieste pre vytvorenie nášho vlastného podpísaného koreňového certifikátu. Preto chceme prepísať niektoré z predvolených nastavení, ktoré sme práve vložili do konfigurácie, takže na príkazovom riadku zadáme prepisy.

Naše prepisy na príkaz “openssl req” sú:

  • Vytvorte nový certifikát s vlastným podpisom: -new -x509
  • Vytvorte certifikát CA: -extensions v3_ca
  • Platí viac ako 30 dní: -dní 3650
  • Napíšte výstup na konkrétne miesta: -keyout, -out
  • Použite náš konfiguračný súbor: -config ./openssl.cnf

(Poznámka k dĺžke platnosti koreňových certifikátov: Keď vyprší platnosť koreňového certifikátu, všetky podpísané certifikáty už nie sú platné.Ak chcete túto situáciu napraviť, musí byť vytvorený a distribuovaný nový koreňový certifikát a všetky podpísané certifikáty S vypršanou platnosťou musí byť zrušený a opätovne podpísaný s novým .To môže byť veľa práce, chcete, aby sa váš koreňový certifikát stal platným tak dlho, ako si myslíte, že ho budete potrebovať. Sú platné desať rokov.)

Spustite príkaz podľa obrázka. V tomto prípade je fráza PEM, ktorú požaduje, nová, ktorú musíte zadať dvakrát:

# openssl req -new -x509 -extensions v3_ca -keyout private/cakey.pem \
-out cacert.pem -days 3650 -config ./openssl.cnf
Using configuration from ./openssl.cnf
Generating a 1024 bit RSA private key
.......++++++
..........................++++++
writing new private key to 'private/cakey.pem'
Enter PEM pass phrase:demo
Verifying password - Enter PEM pass phrase:demo
-----
Chystáte sa zadať informácie, ktoré sa začlenia
do žiadosti o certifikát.
To, čo sa chystáte vstúpiť, je to, čo sa nazýva Rozlišovacie meno alebo DN.
Existuje pomerne málo polí, ale môžete nechať prázdne
Pre niektoré polia bude predvolená hodnota,
Ak zadáte znak ".", Políčko zostane prázdne.
-----
Organization Name (company) [The Sample Company]:<enter>
Organizational Unit Name (department, division) []:CA Division
Email Address []:ca@sample.com
Locality Name (city, district) [Metropolis]:<enter>
State or Province Name (full name) [New York]:<enter>
Country Name (2 letter code) [US]:<enter>
Common Name (hostname, IP, or your name) []:TSC Root CA

Tento proces produkuje ako výstup dva súbory:

  • Súkromný kľúč v private/cakey.pem
  • Certifikát root CA v cacert.pem

cacert.pem je súbor, ktorý chcete distribuovať svojim klientom.

Súkromný kľúč (cakey.pem) vyzerá takto:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,0947F49BB28FE5F4

jlQvt9WdR9Vpg3WQT5+C3HU17bUOwvhp/r0+viMcBUCRW85UqI2BJJKTi1IwQQ4c
tyTrhYJYOP+A6JXt5BzDzZy/B7tjEMDBosPiwH2m4MaP+6wTbi1qR1pFDL3fXYDr
ZsuN08dkbw9ML6LOX5Rl6bIBL3i5hnGiqm338Fl52gNstThv0C/OZhXT3B4qsJn8
qZb3mC6U2nRaP/NpZPcEx4lv2vH7OzHTu1TZ7t0asSpgpuH58dfHPw775kZDep2F
LXA3Oeavg0TLFHkaFBUx2xaeEG6Txpt9I74aAsw1T6UbTSjqgtsK0PHdjPNfPGlY
5U3Do1pnU9hfoem/4RAOe0cCovP/xf6YPBraSFPs4XFfnWwgEtL09ReFqO9T0aSp
5ajLyBOYOBKQ3PCSu1HQDw/OzphInhKxdYg81WBBEfELzSdMFQZgmfGrt5DyyWmq
TADwWtGVvO3pEhO1STmCaNqZQSpSwEGPGo5RFkyFvyvyozWX2SZg4g1o1X40qSg9
0FMHTEB5HQebEkKBoRQMCJN/uyKXTLjNB7ibtVbZmfjsi9oNd3NJNVQQH+o9I/rP
wtFsjs+t7SKrsFB2cxZQdDlFzD6EBA+5ytebGEI1lJHcOUEa6P+LTphlwh/o1QuN
IKX2YKHA4ePrBzdgZ+xZuSLn/Qtjg/eZv6i73VXoHk8EdxfOk5xkJ+DnsNmyx0vq
W53+O05j5xsxzDJfWr1lqBlFF/OkIYCPcyK1iLs4GOwe/V0udDNwr2Uw90tefr3q
X1OZ9Dix+U0u6xXTZTETJ5dF3hV6GF7hP3Tmj9/UQdBwBzr+D8YWzQ==
-----END RSA PRIVATE KEY-----

Samozrejme, nechcete to ukázať nikomu! Netreba dodávať, že ten, ktorý je tu uvedený, je teraz zbytočný ako súkromný kľúč.

Certifikát (cacert.pem) vyzerá takto:

-----BEGIN CERTIFICATE-----
MIIDrTCCAxagAwIBAgIBADANBgkqhkiG9w0BAQQFADCBnDEbMBkGA1UEChMSVGhl
IFNhbXBsZSBDb21wYW55MRQwEgYDVQQLEwtDQSBEaXZpc2lvbjEcMBoGCSqGSIb3
DQEJARYNY2FAc2FtcGxlLmNvbTETMBEGA1UEBxMKTWV0cm9wb2xpczERMA8GA1UE
CBMITmV3IFlvcmsxCzAJBgNVBAYTAlVTMRQwEgYDVQQDEwtUU0MgUm9vdCBDQTAe
Fw0wMTEyMDgwNDI3MDVaFw0wMjEyMDgwNDI3MDVaMIGcMRswGQYDVQQKExJUaGUg
U2FtcGxlIENvbXBhbnkxFDASBgNVBAsTC0NBIERpdmlzaW9uMRwwGgYJKoZIhvcN
AQkBFg1jYUBzYW1wbGUuY29tMRMwEQYDVQQHEwpNZXRyb3BvbGlzMREwDwYDVQQI
EwhOZXcgWW9yazELMAkGA1UEBhMCVVMxFDASBgNVBAMTC1RTQyBSb290IENBMIGf
MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDaiAwfKB6ZBtnTRTIo6ddomt0S9ec0
NcuvtJogt0s9dXpHowh98FCDjnLtCi8du6LDTZluhlOtTFARPlV/LVnpsbyMCXMs
G2qpdjJop+XIBdvoCz2HpGXjUmym8WLqt+coWwJqUSwiEba74JG93v7TU+Xcvc00
5MWnxmKZzD/R3QIDAQABo4H8MIH5MAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFG/v
yytrBtEquMX2dreysix/MlPMMIHJBgNVHSMEgcEwgb6AFG/vyytrBtEquMX2drey
six/MlPMoYGipIGfMIGcMRswGQYDVQQKExJUaGUgU2FtcGxlIENvbXBhbnkxFDAS
BgNVBAsTC0NBIERpdmlzaW9uMRwwGgYJKoZIhvcNAQkBFg1jYUBzYW1wbGUuY29t
MRMwEQYDVQQHEwpNZXRyb3BvbGlzMREwDwYDVQQIEwhOZXcgWW9yazELMAkGA1UE
BhMCVVMxFDASBgNVBAMTC1RTQyBSb290IENBggEAMA0GCSqGSIb3DQEBBAUAA4GB
ABclymJfsPOUazNQO8aIaxwVbXWS+8AFEkMMRx6O68ICAMubQBvs8Buz3ALXhqYe
FS5G13pW2ZnAlSdTkSTKkE5wGZ1RYSfyiEKXb+uOKhDN9LnajDzaMPkNDU2NDXDz
SqHk9ZiE1boQaMzjNLu+KabTLpmL9uXvFA/i+gdenFHv
-----END CERTIFICATE-----

Môžeme dotazovať obsah tohto certifikátu pomocou openssl, aby sme zistili, komu patrí, prečo platí, atď .:

# openssl x509 -in cacert.pem -noout -text
# openssl x509 -in cacert.pem -noout -dates
# openssl x509 -in cacert.pem -noout -purpose

Vytvorenie Žiadosti o Podpis Certifikátu (CSR)

Teraz, keď máme koreňový certifikát, môžeme vytvoriť ľubovoľný počet certifikátov na inštaláciu do našich aplikácií SSL, ako napríklad https, spop alebo simap. Postup zahŕňa vytvorenie súkromného kľúča a žiadosti o certifikát a potom podpísanie požiadavky na vytvorenie certifikátu.

Náš konfiguračný súbor potrebuje niekoľko ďalších definícií na vytváranie certifikátov, ktoré nie sú certifikátmi CA. Na koniec súboru pridajte nasledujúce:

---Begin---
[ v3_req ]
basicConstraints	= CA:FALSE
subjectKeyIdentifier	= hash

----End----

Ak sa chcete vyhnúť tomu, aby ste to opakovane vložili do príkazového riadku, vložte nasledujúci riadok do sekcie [req] po riadku distinguished_name, ako je uvedené:

---Begin---
distinguished_name	= req_distinguished_name
req_extensions		= v3_req

----End----

Teraz sme pripravení vytvoriť prvú požiadavku na certifikát. V tomto príklade vytvoríme certifikát pre zabezpečený server POP na adrese mail.sample.com. Všetko vyzerá rovnako ako pri vytvorení certifikátu certifikačnej autority, ale tri z nasledujúcich výziev dostanú rôzne odpovede.

  • Organizačná jednotka: upozornenie na to, na čo je certifikát určený
  • E-mailová adresa: poštový šéf
  • Bežný názov: názov hostiteľa servera

Bežný názov musí byť (alebo adresa IP musí vyriešiť) meno servera, ktoré klienti používajú na kontaktovanie vášho hostiteľa. Ak sa to nezhoduje, pri každom pripojení klientov sa zobrazí správa s otázkou, či chcú používať tento server. V skutočnosti klientský softvér hovorí: “Upozornenie! Požiadali ste o mail.sample.com, certifikát odpovedajúceho stroja je pre smtp.sample.com .Naozaj chcete pokračovať?”

# openssl req -new -nodes -out req.pem -config ./openssl.cnf
...
Organizational Unit Name (department, division) []:Mail Server
Email Address []:postmaster@sample.com
Common Name (hostname, IP, or your name) []:mail.sample.com
...

Tento proces produkuje ako výstup dva súbory:

  • Súkromný kľúč v key.pem
  • Žiadosť o podpis certifikátu v req.pem

Tieto súbory by sa mali uchovávať. Keď vyprší platnosť certifikátu, ktorý chcete vytvoriť, žiadosť sa môže znova použiť na vytvorenie nového certifikátu s novým dátumom uplynutia platnosti. Súkromný kľúč je samozrejme potrebný na šifrovanie SSL. Pri ukladaní týchto súborov pomôžu zmysluplné názvy; Napríklad mailserver.key.pem a mailserver.req.pem.

Žiadosť o podpis certifikátu vyzerá takto:

-----BEGIN CERTIFICATE REQUEST-----
MIICJDCCAY0CAQAwgagxGzAZBgNVBAoTElRoZSBTYW1wbGUgQ29tcGFueTEUMBIG
A1UECxMLTWFpbCBTZXJ2ZXIxJDAiBgkqhkiG9w0BCQEWFXBvc3RtYXN0ZXJAc2Ft
cGxlLmNvbTETMBEGA1UEBxMKTWV0cm9wb2xpczERMA8GA1UECBMITmV3IFlvcmsx
CzAJBgNVBAYTAlVTMRgwFgYDVQQDEw9tYWlsLnNhbXBsZS5jb20wgZ8wDQYJKoZI
hvcNAQEBBQADgY0AMIGJAoGBAPJhc++WxcBaoDbJpzFbDg42NcOz/ELVFMU4FlPa
yUzUO+xXkdFRMPKo54d4Pf1w575Jhlu9lE+kJ8QN2st6JFySbc9QjPwVwl9D2+I3
SSf2kVTu+2Ur5izCPbVAfU0rPZxxK8ELoOkA1uwwjFz6EFuVvnHwlguonWKDtmYW
u7KTAgMBAAGgOzA5BgkqhkiG9w0BCQ4xLDAqMAkGA1UdEwQCMAAwHQYDVR0OBBYE
FLWaQsUVIQzWr58HtDinH1JfeCheMA0GCSqGSIb3DQEBBAUAA4GBAAbe0jrGEQ3i
tyVfy5Lg4/f69rKvDGs+uhZJ9ZRx7Dl92Qq2osE7XrLB1bANmcoEv/ORLZOjWZEY
NjMvuz60O7R8GKBrvb/YhAwWhIIt2LJqPkpAEWS0kY0AkoQcfZ7h6oC35+eJ7okg
Uu3WuE57RgcNt7/ftr0sG1jUyRwMLvhv
-----END CERTIFICATE REQUEST-----

Obsah môžeme zobraziť, aby sme sa uistili, že naša požiadavka je správna:

# openssl req -in req.pem -text -verify -noout

Podpísanie Certifikátu

Teraz musíme pridať sekciu konfiguračného súboru, ktorá sa zaoberá certifikáciou. Táto časť identifikuje cesty k rôznym častiam, ako je databáza, certifikát certifikačnej autority a súkromný kľúč. Obsahuje aj niektoré základné predvolené hodnoty. Vložte nasledovné do openssl.cnf tesne pred sekciou [req]:

---Begin---
[ ca ]
default_ca		= CA_default

[ CA_default ]
serial			= $dir/serial
database		= $dir/index.txt
new_certs_dir		= $dir/newcerts
certificate		= $dir/cacert.pem
private_key		= $dir/private/cakey.pem
default_days		= 365
default_md		= md5
preserve		= no
email_in_dn		= no
nameopt			= default_ca
certopt			= default_ca
policy			= policy_match

[ policy_match ]
countryName		= match
stateOrProvinceName	= match
organizationName	= match
organizationalUnitName	= optional
commonName		= supplied
emailAddress		= optional

----End----

Ak chcete podpísať žiadosť, ktorú sme vykonali v predchádzajúcom kroku, vykonajte nasledujúce kroky a odpovedzte na výzvy. Upozorňujeme, že ste požiadali o prístupovú frázu PEM vybratú skôr:

# openssl ca -out cert.pem -config ./openssl.cnf -infiles req.pem
Using configuration from ./openssl.cnf
Enter PEM pass phrase:demo
Check that the request matches the signature
Signature ok
The Subjects Distinguished Name is as follows
organizationName      :PRINTABLE:'The Sample Company'
organizationalUnitName:PRINTABLE:'Mail Server'
emailAddress          :IA5STRING:'postmaster@sample.com'
localityName          :PRINTABLE:'Metropolis'
stateOrProvinceName   :PRINTABLE:'New York'
countryName           :PRINTABLE:'US'
commonName            :PRINTABLE:'mail.sample.com'
Certificate is to be certified until Dec  8 04:37:38 2002 GMT (365 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Tento proces aktualizuje databázu CA a produkuje dva výstupy:

  • Certifikát v cert.pem
  • Kópia certifikátu v nových verziách/<serial>.pem

Opäť môžete skontrolovať certifikát:

# openssl x509 -in cert.pem -noout -text -purpose | more

Certifikát má zakódovanú verziu a verziu čitateľnú pre človeka v tom istom súbore. Môžete oddeliť ľudsky čitateľnú časť takto:

# mv cert.pem tmp.pem
# openssl x509 -in tmp.pem -out cert.pem

Inštalácia Certifikátu a Kľúča

To závisí od aplikácie. Niektorí si chcú kľúč a certifikát v tom istom súbore a ostatní ich chcú oddelene. Kombinácia sa dá ľahko uskutočniť pomocou:

# cat key.pem cert.pem >key-cert.pem

Po tomto kroku máte k dispozícii tri inštalovateľné súčasti:

  • Súkromný kľúč v key.pem
  • Certifikát v cert.pem
  • Kombinovaný privátny kľúč a certifikát v key-cert.pem

Skopírujte príslušné súbory do miest určených inštrukciami pre vašu aplikáciu a systém. Reštartujte aplikácie a používate nový certifikát.

Apache

Apache má samostatné konfiguračné direktívy pre kľúč a certifikát, takže si každý ponecháme vo svojom vlastnom súbore. Tieto súbory by sa mali uchovávať mimo podriadeného dokumentu DocumentRoot, takže primeraná štruktúra adresárov môže byť:

Súbor Komentár
/home/httpd/html Apache DocumentRoot
/home/httpd/ssl Súbory súvisiace so SSL
/home/httpd/ssl/cert.pem Certifikát stránok
/home/httpd/ssl/key.pem Osobný kľúč stránok

V rámci smernice <VirtualHost> pre lokalitu (ktorá by samozrejme mala byť na portu 443), zahrňte smernice, ktoré odkazujú na tieto súbory:

<VirtualHost 192.168.1.1:443>
   ServerName mail.sample.com
   DocumentRoot /home/httpd/html
   ... other directives for this site ...
   SSLEngine on
   SSLLog /var/log/ssl_engine_log
   SSLCertificateFile /home/httpd/ssl/cert.pem
   SSLCertificateKeyFile /home/httpd/ssl/key.pem
</VirtualHost>

Stunnel

Stunnel sa používa ako obal SSL pre bežné nezabezpečené služby, ako sú IMAP a POP. Prijíma ako argumenty (okrem iného) službu na vykonanie a umiestnenie certifikátu a súkromného kľúča.

Kľúč a certifikát sú poskytované v tom istom súbore. Tie môžu ísť kdekoľvek, ale dobré umiestnenie môže byť /etc/ssl/certs. Zadajte ho na príkazovom riadku stánku takto:

stunnel -p /etc/ssl/certs/key-cert.pem <other stunnel args...>

Čaká nás viac…

Distribúcia Certifikátu CA

To nakoniec je krok, ktorý klientom zabráni sťažovať sa na nedôveryhodné certifikáty. Odošlite cacert.pem každému, kto použije vaše zabezpečené servery, aby ho mohli inštalovať do svojich prehliadačov, poštových klientov a tak ďalej ako koreňový certifikát.

Obnova Certifikátov

Váš reťazec certifikátov sa môže prerušiť v dôsledku vypršania platnosti certifikátu dvomi spôsobmi:

  • Certifikáty, ktoré ste podpísali s vaším koreňovým certifikátom, vypršali.
  • Vypršal váš koreňový certifikát.

V druhom prípade máte nejakú prácu. Musí byť vytvorený a distribuovaný nový certifikát hlavného certifikačného autoritu a vaše existujúce certifikáty musia byť znovu vytvorené alebo opätovne podpísané.

V prvom prípade máte dve možnosti. Môžete buď vygenerovať nové žiadosti o podpisovanie certifikátov a podpísať ich tak, ako je to popísané vyššie, alebo (ak si ich ponecháte), môžete opätovne podpísať pôvodné požiadavky. V oboch prípadoch musia byť staré certifikáty zrušené a potom nové certifikáty podpísané a nainštalované do vašich zabezpečených aplikácií, ako bolo popísané vyššie.

Nemôžete vydať dva certifikáty s rovnakým bežným názvom, a preto musia byť zrušené certifikáty s uplynutou platnosťou. Certifikát je v adresári newcerts; Jeho názov súboru môžete určiť prehliadaním index.txt a vyhľadaním bežného názvu (CN). Názov súboru je index plus prípona “.pem”, napríklad “02.pem”. Odvolanie certifikátu:

# openssl ca -revoke newcerts/02.pem -config ./openssl.cnf
Using configuration from ./openssl.cnf
Enter PEM pass phrase: demo
Revoking Certificate 02.
Data Base Updated

Teraz, keď bol certifikát zrušený, môžete opätovne podpísať pôvodnú žiadosť alebo vytvoriť a podpísať novú, ako je popísané vyššie.

Získanie Komerčne Podpísaného Certifikátu

Proces je v podstate rovnaký ako ten, ktorý práve preukázal, ale CA to robí väčšinou. Musíte vygenerovať žiadosť o podpísanie certifikátu, ako je uvedené vyššie, a potom ju odoslať na podpis. Dostanete podpísaný certifikát pre inštaláciu.

Tento certifikát bude automaticky dôveryhodný prehliadačom vášho klienta, pretože v prehliadači je zabudovaný certifikát komerčného CA. Nie je potrebné nič rozširovať.

Tu popísaná konfigurácia môže byť pre tento účel nedostatočná, pretože v žiadosti môže byť oveľa viac. Rôzne certifikačné autority vyžadujú v žiadosti o podpisovanie certifikátov rôzne funkcie, z ktorých žiadny z nich tu nie je. Tento dodatočný materiál je mimo súčasného rozsahu tohto dokumentu.

Publikovanie Certifikátu CA

Certifikát môžete uverejniť na svojej webovej stránke na stiahnutie. Ak tak urobíte, mali by ste tiež zverejniť zoznam zrušených certifikátov (CRL) a spôsob zobrazovania certifikátu na základe jeho sériového čísla. Toto je mimo súčasného rozsahu tohto dokumentu.

Apache zobrazí váš certifikát vo forme rozpoznateľnej pre prehliadače, ak zadáte jeho typ MIME. Môžete napríklad použiť rozšírenie “.crt” pre stiahnuté certifikáty a do všeobecnej sekcie konfigurácie Apache vložte nasledujúce:

AddType application/x-x509-ca-cert .crt

Teraz môžete odoslať certifikát na stiahnutie pomocou odkazu, ako je napríklad <a href=”www.sample.com/ourrootcert.crt”> Náš základný certifikát </a>, a ak bude odkaz nasledovať, prehliadač návštevníka ponúkne inštaláciu certifikátu.

CRL môže byť vytvorené nasledovne:

# openssl ca -gencrl -crldays 31 -config ./openssl.cnf -out rootca.crl

Čaká nás viac…

Zhrnutie

Teraz máte dostatok informácií na vytvorenie a podpísanie certifikátov vo vlastnom mene. Zatiaľ čo ide o dosť dlhý dokument, postup je možné ľahko zhrnúť.

Jednorazové nastavenie

Nastavte si a vytvorte si certifikát root CA.

Príkazy

# mkdir CA
# cd CA
# mkdir newcerts private
# echo '01' >serial
# touch index.txt
# (IMPORTANT: Install and edit the configuration file shown below.)
# openssl req -new -x509 -extensions v3_ca -keyout private/cakey.pem \
-out cacert.pem -days 365 -config ./openssl.cnf

Výkon

Súbor Účel
cacert.pem Certifikát CA
private/cakey.pem Súkromný kľúč CA

Distribuujte cacert.pem svojim klientom.

Na certifikát

Vytvorte žiadosti o podpisovanie certifikátov a podpíšte ich a poskytnite príslušné hodnoty Bežného názvu a Organizačnej jednotky.

Príkazy

# openssl req -new -nodes -out req.pem -config ./openssl.cnf
# openssl ca -out cert.pem -config ./openssl.cnf -infiles req.pem
# cat key.pem cert.pem >key-cert.pem

Výkon

Súbor Účel
key.pem Súkromný kľúč
req.pem Žiadosť o podpis certifikátu
cert.pem Certifikát
key-cert.pem Kombinovaný súkromný kľúč a certifikát

Nainštalujte key.pem a cert.pem, alebo len key-cert.pem, ktorý je vhodný pre vašu serverovú aplikáciu.

Na Certifikát – Obnovenie

Zrušiť certifikát s uplynutou platnosťou a opätovne podpísať pôvodnú žiadosť.

Príkazy

# openssl ca -revoke newcerts/<serial>.pem -config ./openssl.cnf
# openssl ca -out cert.pem -config ./openssl.cnf -infiles req.pem

Inštalujte obnovené certifikáty rovnakým spôsobom ako pôvodné certifikáty.

Konfiguračný Súbor

(Tento súbor je k dispozícii na prevzatie.)

---Begin---
#
# Konfiguračný súbor OpenSSL.
#

# Vytvorte pracovný adresár.

dir			= .

[ ca ]
default_ca		= CA_default

[ CA_default ]
serial			= $dir/serial
database		= $dir/index.txt
new_certs_dir		= $dir/newcerts
certificate		= $dir/cacert.pem
private_key		= $dir/private/cakey.pem
default_days		= 365
default_md		= md5
preserve		= no
email_in_dn		= no
nameopt			= default_ca
certopt			= default_ca
policy			= policy_match

[ policy_match ]
countryName		= match
stateOrProvinceName	= match
organizationName	= match
organizationalUnitName	= optional
commonName		= supplied
emailAddress		= optional

[ req ]
default_bits		= 1024			# Veľkosť kľúčov
default_keyfile		= key.pem		# názov vygenerovaných kľúčov
default_md		= md5			# algoritmus digestu správ
string_mask		= nombstr		# povolené znaky
distinguished_name	= req_distinguished_name
req_extensions		= v3_req

[ req_distinguished_name ]
# Názov premennej         Prompt string
#----------------------	  ----------------------------------
0.organizationName	= Organization Name (company)
organizationalUnitName	= Organizational Unit Name (department, division)
emailAddress		= Email Address
emailAddress_max	= 40
localityName		= Locality Name (city, district)
stateOrProvinceName	= State or Province Name (full name)
countryName		= Country Name (2 letter code)
countryName_min		= 2
countryName_max		= 2
commonName		= Common Name (hostname, IP, or your name)
commonName_max		= 64

# Predvolené hodnoty pre vyššie uvedené, pre konzistenciu a menej písania.
# Názov premennej		  Hodnota
#------------------------------	  ------------------------------
0.organizationName_default	= The Sample Company
localityName_default		= Metropolis
stateOrProvinceName_default	= New York
countryName_default		= US

[ v3_ca ]
basicConstraints	= CA:TRUE
subjectKeyIdentifier	= hash
authorityKeyIdentifier	= keyid:always,issuer:always

[ v3_req ]
basicConstraints	= CA:FALSE
subjectKeyIdentifier	= hash

----End----

Ďalšie informácie sú k dispozícii na nasledujúcich stránkach (otvorí sa v novom okne):

  • Dokumentácia OpenSSL
  • OpenSSL FAQ
  • Manažment a inštalácia certifikátov Nick Burch s OpenSSL
  • Franck Martin SSL certifikáty HOWTO

Vyskúšal a napísal Marcus Redivo.
Povolenie používať tento dokument na akýkoľvek účel sa týmto udeľuje za predpokladu, že informácie o autorskom práve a toto vylúčenie zodpovednosti sa zachovajú. Autor neručí za žiadne následky vyplývajúce z používania týchto informácií.

Copyright © 1996, 2017 Marcus Redivo. Všetky práva vyhradené.

Original in English: http://www.eclectica.ca/howto/ssl-cert-howto.php

Homepage