Vlastní CA (certifikační autorita)

(CentOS 5)

Úprava konfiguračního souboru

V konfiguračním souboru /etc/pki/tls/openssl.cnf nastavíme cesty (k adresáři a souborům veřejného/privátního klíče CA), pravidla policy a výchozí velikost klíčů: dir            = /etc/pki/CA 
certificate    = $dir/CA.crt 
private_key    = $dir/private/CA.key 
policy         = policy_anything 
default_bits   = 2048
 
V sekci [ req_distinguished_name ] lze nastavit výchozí údaje (nazev_default) uvedené při generování certifikátů.

Vytvoření CA

Vytvoření potřebných adresářů certs, crl, newcerts, private* podle konf. souboru openssl.cnf: cd /etc/pki/CA
mkdir certs crl newcerts

*Adresář private je v balíku openssl (CentOS 5) již obsažen. Pokud chybí, vytvoříme ho s omezenými přístupovými právy: mkdir -m 700 private
V adresáři CA je třeba vytvořit 2 soubory index.txt (database index file) a serial s hodnotou sériového čísla certifikátu (automaticky inkrementováno):touch index.txt
echo 01 > serial

Vygenerování privátního klíče (použít silné heslo) a veřejného certifikátu CA (platnost 10 let):openssl req -new -x509 -days 3653 -extensions v3_ca -keyout private/CA.key -out CA.crt
Omezení přístupových práv k privátnímu klíči CA:chmod 400 private/CA.key

Žádost o podepsání certifikátu

Vytvoření privátního klíče s žádostí o podepsání certifikátu: openssl req -new -nodes -keyout domena.key -out domena.csr
Vytvoření žádosti o podepsání existujícího certifikátu resp. klíče (domena.key): openssl req -new -key domena.key -out domena.csr
Poznámka: Pro generování klíčů, certifikátů i požadavků lze (místo příkazu openssl req) použít interaktivní utilitu genkey
(součást crypto-utils), která pomocí truerand library generuje náhodná data pro privátní klíč. 

Podepsání a revokace certifikátu

Podepsání požadavku certifikační autoritou (platnost 2 roky): openssl ca -days 731 -in domena.csr -out domena.crt
Revokace certifikátu (01.pem = "sériové číslo certifikátu".pem): openssl ca -verbose -revoke /etc/pki/CA/newcerts/01.pem

Komentáře

Díky za přínosný článek!

Vyzkoušeno na Centos 6.3 a funguje.

 

Pro ty, kdo to chtějí rozchodit v konfiguraci Apache, přidat do configu například:

SSLEngine on SSLVerifyClient none SSLCertificateFile /etc/pki/CA/[domena].crt SSLCACertificateFile /etc/pki/CA/CA.crt

 

Pro mě bylo zapotřebí ještě:

  • zařídit, aby mohl být použit klíč s heslem nebo odebrat heslo z privatního klíče pomocí: openssl rsa -in klic-s-heslem.key -out klic-bez-hesla.key
  • přidat privátní klíč do jednoho souboru k veřejnému klíči (umístit před veřejný klíč pomocí textového editoru)

Jsem rád, že se hodil. :-)

Díky za otestování v aktuální verzi CentOS a doplnění užitečných informací.