certification authority
Marcin Król
krol w wsb-nlu.edu.pl
Wto, 4 Maj 2004, 11:23:31 CEST
> 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.
Więcej informacji o liście dyskusyjnej pld-users-pl