Propozycja openssl

Marek Ciesielski marekc w klub.chip.pl
Wto, 4 Maj 2004, 11:53:14 CEST


Proponuje najpierw sprawdzić, a później dodać do dokumentacji... no i
autora się zapytać :)

-------------------------- Wiadomość oryginalna --------------------------
Temat: Re: certification authority
Od:    Marcin Król <krol w wsb-nlu.edu.pl>
Data:  Wt Maja 4 2004, 11:23
Do:    "Eksploatorzy PLD Linuksa" <pld-users-pl w pld-linux.org>
--------------------------------------------------------------------------

> Witajcie.
> Próbował ktoś na PLD uruchomić jakieś oprogramowanie o funkcjonalności
CA? (np www.openca.org). Osobiście próbowałem uruchomić OpenCA z
miernymi skutkami (problemy z formularzami w mozilli, a i IE sobie nie
radzi).  Chętnie wymienie z kimś doświadczenia związane z tego typu
oprogramoawniem. Pozdrawiam.

Mi w zupelnosci do generowania certyfikatow wystarcza openssl. Mozna na
nim zrobic proste CA w nastepujacy sposob:

1. W /var/lib/openssl zakldamy nastepujace katalogi: certs, crl,
newcerts, private oraz pusty plik index.txt, a takze pliczek serial
poprzez echo 01 > serial

2. Jezeli nie mamy w /var/lib/openssl symlinku do
/etc/openssl/openssl.cnf - tworzymy go (ln -s /etc/openssl/openssl.cnf
/var/lib/openssl/openssl.cnf

3. Edytujemy pliczek openssl.cnf zmieniajac nastepujace sciezki:
dir = /var/lib/opensll
certs = $dir/certs
crl_dir = $dir/crl
database = $dir/index.txt
certificate = $dir/private/cacert.pem
serial = $dir/serial
private_key = $dir/private/cakey.pem

4. Generujemy kluczy prywatny naszego CA:

openssl genrsa -des3 -out /var/lib/openssl/private/cakey.pem 1024

Zaleca sie zachowanie wielkosci klucza 1024. Wieksze klucze moga
powodowac problemy z niektorymi przegladarkami WWW i aplikacjami
korzystajacymi z certyfikatow. Lepiej tez ten plik zbackupowac i zadbac
aby nikt nie mial do niego dostepu. Jest to klucz prywatny naszego CA
ktory bedzie uzywany do podpisywania certyfikatow... A chyba nie chcemy
aby ktos za nas podpisywal certyfikaty? ;)

5. Tworzymy CSR (Certificate Signing Request) dla naszego CA:

openssl req -new -key /var/lib/openssl/private/cakey.pem -out
/var/lib/private/cacsr.pem

6. Generujemy certyfikat dla klucza publicznego naszego CA wazny na 10 lat:

openssl req -in /var/lib/openssl/private/cacsr.pem -out
/var/lib/openssl/private/cacert.pem -key
/var/lib/openssl/private/cakey.pem -x509 -days 3652

7. Wykonujemy:
chown -R root:root /var/lib/openssl/private
chmod 700 /var/lib/openssl/private
i chmod 600 wszystkich plikow w /var/lib/openssl/private

I mamy juz nasze CA... Teraz mozemy np. wygenerowac certyfikat dla
apache'a wazny przez dwa lata:

openssl genrsa -des3 -out jakis_vhost-key.pem 1024

openssl req -new -key jakis_vhost-key.pem -out jakis_vhost-csr.pem

openssl ca -in jakis_vhost-csr.pem -out jakis_vhost-crt.pem -days 730
-policy policy_anything

I gotowe. Wystarczy pliczki jakis_vhost-key.pem i jakis_vhost-crt.pem
podpiac w odpowiednim miejscu w konfiguracji apache'a.

Jezeli apache przy starcie zada od nas hasla do certfikatu, mozemy je
usunac:

openssl rsa -in jakis_vhost-key.pem -out jakis_vhost-bez-hasla-key.pem

Jezeli potrzebujemy naszego certyfikatu w formacie .pem (tak, wiem,  pliki
w powyzszych przykladach maja mylne rozszerzenia, ale tak sie juz
przyzwyczailem, ze nie chcialo mi sie modyfikowac), np dla imaps czy
pop3s to wystarczy:
cat jakis_vhost-key.pem > nasz_certyfikat.pem
cat jakis_vhost-crt.pem >> nasz_certyfikat.pem

Oczywiscie haslo z pliku *-key.pem lepiej usunac, albo bedziemy o nie
pytani przy starcie uslugi.

Jezeli potrzebujemy, mozemy tez odwolac waznosc certyfikatu poprzez:

openssl ca -revoke jakis_vhost-crt.pem -keyfile
/var/lib/openssl/private/cakey.pem -cert /var/lib/openssl/cacert.pem

Nadmienic jeszcze trzeba, ze korzystanie z polecenia openssl za kazdym
razem gdy chcemy wygenerowac certyfikat moze byc dosc uciazliwe, chocby
ze wzgledu na potrzebe podawania kilka razy hasla naszego CA. Dlatego  tez
warto sobie powyzsze czynnosci obskryptowac. Haslo mozemy przekazac  do
polecenia np przy generowaniu certyfikatu w taki sposob:

openssl genrsa -des3 -out $1-key.pem -passout
file:/var/lib/openssl/private/nasze_super_tajne_haslo 1024

gdzie plik /var/lib/openssl/private/nasze_super_tajne_haslo zawiera
haslo, bez znaku konca linii.

Podobnie mozna przekazac haslo w kazdym z uzywanych powyzej polecen,
wystarczy zerknac w skladnie polecenia openssl.

Mam nadzieje, ze choc troche pomoglem, i ze niczego nie pokrecilem :-)

Pozdrawiam.
M.

_________________________________________
http://pld-linux.org/ = faq, howto, newsy

dostales tutaj odpowiedz na swoje pytanie?
podziel sie z innymi i dopisz do FAQ!
                http://pld-linux.org/FAQ/




-- 
Marek Ciesielski
marekc w klub.chip.pl
ciesiel w jabber.uznam.net.pl; GG: 3809029
http://klub.chip.pl/mc_540ddc/



Więcej informacji o liście dyskusyjnej pld-doc