OpenSSL: podepisování a klíče
Všechny úkony s certifikáty se řídí nastavením v /etc/ssl/openssl.cnf
Ukázkový příklad nastavení pro server example.net. Jsou zde jen relevantní části, které je potřeba editovat.
[ ca ] default_ca = CA_default # The default ca section ... [ CA_default ] dir = /etc/ssl # Where everything is kept certs = $dir/certs # Where the issued certs are kept crl_dir = $dir # Where the issued crl are kept database = $dir/data/index.txt # database index file. #unique_subject = no # Set to 'no' to allow creation of # several ctificates with same subject. new_certs_dir = $dir/newcerts # default place for new certs. certificate = $dir/certs/ca_fp.crt # The CA certificate serial = $dir/data/serial # The current serial number crlnumber = $dir/crlnumber # the current crl number # must be commented out to leave a V1 CRL crl = $crl_dir/crl.pem # The current CRL private_key = $dir/private/ca_fp.key # The private CA key RANDFILE = $dir/.rand # private random number file x509_extensions = usr_cert # The extentions to add to the cert ... default_days = 1825 # how long to certify for default_crl_days= 30 # how long before next CRL default_md = sha1 # which md to use. preserve = no # keep passed DN ordering ... policy = policy_match ... [ req ] default_bits = 2048 default_keyfile = key.req distinguished_name = req_distinguished_name attributes = req_attributes ... [ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_default = CZ countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = Czech Republic localityName = Locality Name (eg, city) localityName_default = Praha 0.organizationName = Organization Name (eg, company) 0.organizationName_default = Firma s.r.o. ... organizationalUnitName = Organizational Unit Name (eg, section)
Chceme-li vytvořit certifikát pro server, odkomentujeme následující
nsCertType = server
Pokud budete chtít uplatnit certifikát i na jiné domény, jako například na doménu loc
, přidejte následující direktivy. Můžete tak předejít chybovým hlášením, že nesouhlasí jméno certifikátu se jménem serveru.
[ v3_req ] subjectAltName = DNS:example.loc, DNS:*.example.loc
Máme nastaveny cesty k certifikátům, a to v /etc/ssl
. Vytvoříme si tedy i podadresáře pro typy certifikátů. Pouze ty, které v systému ještě nemáme.
mkdir /etc/ssl/data mkdir /etc/ssl/certs mkdir /etc/ssl/newcerts mkdir /etc/ssl/private mkdir /etc/ssl/requests
Vytvoření souborů, nutných pro správne generování (a přehled vydaných) certifikátů
echo 01 > /etc/ssl/data/serial # začínáme od čísla 1 touch /etc/ssl/data/index.txt
Generování certifikátů
Generování vlastní CA
openssl req -new -x509 -nodes -out certs/ca.crt -keyout private/ca.key -days 3650
Generování DH
openssl dhparam -out private/dh2048.pem 2048
Generování žádosti o certifikát
openssl req -new -nodes -out requests/prijmeni_jmeno.req -keyout private/prijmeni_jmeno.key -days 3650
Vytvoření a podepsání klíče
openssl ca -in requests/prijmeni_jmeno.req -out certs/prijmeni_jmeno.crt -days 3650
Vytvoření .p12 klíče
Pro podepisování e-mailů např. v poštovním klientovi Mozilla Thunderbird
openssl pkcs12 -inkey private/prijmeni_jmeno.key -chain -in certs/prijmeni_jmeno.crt -CAfile certs/ca_fp.crt -out p12/prijmeni_jmeno_FPCA.p12 -name "Jmeno Prijmeni" -export
Revokace certifikátu
openssl ca -revoke newcerts/01.pem openssl ca -gencrl -out crl.pem
Kopírování klíčů
Překopírování souboru (klíče) pomocí ssh ze serveru
sudo scp -i /cesta/ke/klici/klic.key IP_serveru:/co/kopirovat/soubor /kam/kopirovat
Překopírování souboru (klíče) pomocí ssh na server
sudo scp -i /cesta/ke/klici/klic.key /co/kopirovat/soubor IP_serveru:/kam/kopirovat
Nejnovější komentáře