Vlastní CA a generování certifikátů
Vytvoření vlastní certifikační autority. Nutné pro SSL podporu některých serverů a vhodné pro SSL podporu všech serverů.
Přehled souborů
/ca (Pracovní soubory naší CA) /ca/signedcerts (Podepsané veřejné klíče) /ca/private (Privátní klíče)
Příprava struktury
mkdir /ca mkdir /ca/signedcerts mkdir /ca/private echo "01" > /ca/serial touch /ca/index.txt
Konfigurační soubor CA
nano /ca/caconfig.cnf
[ ca ] default_ca = local_ca [ local_ca ] dir = /ca certificate = $dir/cacert.pem # Verejny klic CA database = $dir/index.txt # Databaze vydanych certifikatu new_certs_dir = $dir/signedcerts # Adresar na hotove verejne klice private_key = $dir/private/cakey.pem # Privatni klic CA (Prisne tajny!) serial = $dir/serial # Cislovani default_crl_days = 365 # Vychozi platnost certifikatu (dny) default_days = 1825 # Vychozi doba po jakou bude mozne certifikat overit default_md = sha1 policy = local_ca_policy x509_extensions = local_ca_extensions [ local_ca_policy ] commonName = optional # Nekdy je treba uvest stateOrProvinceName = supplied countryName = supplied emailAddress = optional organizationName = supplied organizationalUnitName = supplied [ local_ca_extensions ] subjectAltName = DNS:alt.tradeshowhell.com basicConstraints = CA:false nsCertType = server [ req ] default_bits = 2048 default_keyfile = /ca/private/cakey.pem default_md = sha1 prompt = no distinguished_name = root_ca_distinguished_name x509_extensions = root_ca_extensions [ root_ca_distinguished_name ] commonName = Moje certifikacni autorita stateOrProvinceName = Czech Republic countryName = CZ emailAddress = root@email.cz organizationName = Organizace organizationalUnitName = Oddeleni [ root_ca_extensions ] basicConstraints = CA:true
Vytvoření kořenového certifikátu
Kořenový certifikát by měl mít 2x delší platnost než běžné certifikáty, ale měl by být vydáván ve stejných intervalech. Tím se budou překrývat, takže to zkrátka bude fungovat. (Při vydání nového CA certifikátu by měl být ponechán ten starý tak aby se překrývaly a s vyjímkou prvního cyklu byly vždy 2 - starý a nový, mazaly by se až starší)openssl req -new -x509 -days 1825 -keyout /ca/private/cakey.pem -out /ca/cacert.pem -config /ca/caconfig.cnf
Generating a 2048 bit RSA private key ..................................+++ ..........................................................+++ writing new private key to '/ca/private/cakey.pem' Enter PEM pass phrase:heslo Verifying - Enter PEM pass phrase:heslo -----
Vytvoření certifikátu
Vytvoříme nepodepsaný certifikát: (Toto u skutečných CA dělají zákazníci)openssl req -new -nodes -keyout /ca/private/TEST.pem -out /ca/pozadavek.csr -newkey 2048
Generating a 2048 bit RSA private key ...................+++ ...............................................................................................................+++ writing new private key to '/ca/private/TEST.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:CZ State or Province Name (full name) [Some-State]:Czech republic Locality Name (eg, city) []:Mesto Organization Name (eg, company) [Internet Widgits Pty Ltd]:Organizace Organizational Unit Name (eg, section) []: Common Name (eg, YOUR name) []:192.168.56.105 Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:Podepíšeme certifikát kořenovým certifikátem CA: (Tím skutečné CA schvalují/vydávají certifikáty)
openssl ca -in /ca/pozadavek.csr -out /ca/signedcerts/TEST.pem -config /ca/caconfig.cnf
Using configuration from /ca/caconfig.cnf Enter pass phrase for /ca/private/cakey.pem: Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'CZ' stateOrProvinceName :PRINTABLE:'Czech republic' localityName :PRINTABLE:'Mesto' organizationName :PRINTABLE:'Organizace' commonName :PRINTABLE:'192.168.56.105' Certificate is to be certified until Sep 13 14:21:34 2015 GMT (1825 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
Certifikát pro různé servery (HTTPS, FTPS, LDAPS...)
Většinou se v konfiguračním souboru vyskytují následující proměnné:SSLCertificateFile /ca/signedcerts/TEST.pem SSLCertificateKeyFile /ca/private/TEST.pem # Toto by nemelo byt nezbytne #SSLCACertificateFile /ca/cacert.pemV praxi by se samozřejmě měly požít spíše kopie těchto souborů. Ty by měly ukazovat na soubory které zkopírujete například z umístění v komentářích.
Tipy
- Certifikát pro SSL apache musí v commonName (CN) mít IP serveru, nebo jeho název, jinak bude prohlížeč varovat před podvodnou stránkou
- Do klientů (webových prohlížečů) se musí importovat veřejný CA certifikát, jinak budou tyto certifikáty považovat za neduvěryhodné.
Konverze CER do PEM
C:\openssl\openssl x509 -in TEST.cer -out TEST.pem
Autor: Jan Kalina Vydáno: 4.9.2010 18:17 Přečteno: 3680x Hodnocení: neohodnoceno Vaše hodnocení: |
AbcLinuxu: Vytvoření vlastní CA a generování certifikátů nejen pro Apache Ubuntu community: OpenSSL VUT: Žádost o certifikát CA VUT z Unixu |
Komentáře
Nebyly přidány žádné komentáře.