Szybkie tworzenie klucza, CSRek oraz konwersja certyfikatów w OpenSSL

Tworzenie klucza RSA 2048-bitowego:

openssl genrsa –out klucz.key 2048 //nie działa w powershell, tam trzeba podać pełną ścieżkę pliku

Następnie, aby stworzyć CSRkę (certificate signing request) warto mieć do tego przygotowany config. Przykładowy wygląda tak:

[ req ]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn
utf = yes

[ dn ]
C=PL
ST=SL
L=Tychy
O=it.supra.tf
OU=IT
[email protected]
CN = it.supra.tf

[ req_ext ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = it.supra.tf

Takie coś zapisujemy do jakiegoś pliku, np. config.cnf.
Następnie tworzymy CSR:

openssl req -new -key klucz.key -out it.supra.tf.csr -config config.cnf

Potem taki CSR musimy wykorzystać do podpisania certyfikatu w naszym CA. Jeśli pobierzemy plik w formacie DER zamiast Base-64, można go skonwertować w ten sposób:

openssl x509 -inform pem -in it.supra.tf.cer -out it.supra.tf.pem

Przy okazji te polecenie się przydaje do sprawdzenia zawartości CSRki:

openssl req -in shadowcontrol.anzenalab.local.csr -text -noout

Certyfikat składa się z certyfikatu serwera oraz łańcucha (serwerów, które potwierdzają ważność certyfikatu (może być ich wiele jeśli mamy wielostopniowe PKI, gdzie jest główny urząd certyfikacji i pośredni). Przykład docelowego certyfikatu:

-----BEGIN CERTIFICATE-----
XDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXD
XDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXD
XDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXD
certyfikat serwera
XDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXD
XDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXD
XDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXD
XDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXD
XDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXD=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
XDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXD
XDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXD
XDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXD
certyfikat urzędu certyfikacji, który podpisał certyfikat serwera
XDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXD
XDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXD
XDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXD
XDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXD
XDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXD=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
XDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXD
XDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXD
XDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXD
certyfikat urzędu certyfikacji, który podpisał certyfikat urzędu certyfikacji powyżej
(o ile taki urząd istnieje w PKI)
XDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXD
XDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXD
XDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXD
XDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXD
XDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXD=
-----END CERTIFICATE-----

W następujący sposób można sprawdzić, czy certyfikat się zgadza z kluczem:

> openssl x509 -noout -modulus -in phpipam.crt | openssl md5
MD5(stdin)= 1144fb849c1b3abe152a3cbdf9ddce49
> openssl rsa -noout -modulus -in phpipam.key | openssl md5
MD5(stdin)= 1144fb849c1b3abe152a3cbdf9ddce49

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *