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
- Rýchly štart
- Pozadie
- Predpoklady
- Počiatočné Nastavenie
- Vytvorenie Koreňového Certifikátu
- Vytvorenie Žiadosti o Podpis Certifikátu (CSR)
- Podpísanie Certifikátu
- Inštalácia Certifikátu a Kľúča
- Distribúcia Certifikátu CA
- Obnova Certifikátov
- Získanie Komerčne Podpísaného Certifikátu
- Publikovanie Certifikátu CA
- Zhrnutie
- Konfiguračný Súbor
- Referencie
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----
Referencie
Ď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