Polecenia OpenSSL

1. Generowanie klucza prywatnego z hasłem

Hasło będzie należało podać podczas startowania serwera.

openssl genrsa -des3 -out mojadomena.key 2048

2. Generowanie klucza prywatnego bez hasła

Potencjalnie niebezpieczne, ale umożliwi wystartowanie serwera bez podawania hasła.

openssl genrsa -out mojadomena.key 2048

3. Usunięcie hasła z klucza prywatnego

openssl rsa -in mojadomena.key -out mojadomena.bezhasla.key

4. Generowanie CSR

Wpisz poniższe polecenie, aby wygenerować CSR wg prywatnego klucza RSA. (w formacie PEM). Zakładamy, że plik CSR będzie nosił nazwę mojadomena.csr.

openssl req -new -sha256 -key mojadomena.key -out mojadomena.csr

Przykładowa zawartość pliku CSR:

-----BEGIN CERTIFICATE REQUEST-----
MIIDCjCCAnMCAQAwdTEZMBcGA1UEAxMQaG9zdC5kb21haW4ubmFtZTEVM
BMGA1UECxMMT3JnYW5pemF0aW9uMRUwEwYDVQQKEwxPcmdhbml6YXRpb2
Vnq2AWTDw2ykyxKg6neb2vYTZRvbot7M578Vvh6P8CAwEAAaCCAVMwGgY
KKwYBBAGCNw0CAzEMFgo1LjAuMjE5NS4yMDUGCisGAQQBgjcCAQ4xJzAl
MA4GA1UdDwEB/wQEAwIE8DATBgNVHSUEDDAKBggrBgEFBQcDATCB/QYKK
IhvcNAQEFBQADgYEAg4+QHTvkP5CG+WcGnrhKiMkJnMP6QEsds40obUDS
dGtEupQz8C+4xoMd1aM68q9Ri6Va+JTeuhKHxLz9hT/KUJhNBy0sRfnx+
JkQdrKG69UanTwvLqXINh9xChw9ErIto/2kZI5kl2KYQdiOqTv6p0GEUP
Rq/MD52Zy3bOzSRF0=
-----END CERTIFICATE REQUEST-----

Szczegółowe informacje na temat generowania CSR.


5. Weryfikacja klucza prywatnego

openssl rsa -in mojadomena.key -check

6. Weryfikacja pliku CSR

openssl req -noout -text -in mojadomena.csr
lub
openssl req -noout -verify -in mojadomena.csr

7. Weryfikacja certyfikatu SSL

openssl x509 -noout -text -in mojadomena.pem

8. Weryfikacja sum kontrolnych klucza prywatnego, CSR-a (Żądania Podpisania Certyfikatu) i certyfikatu

Poniższe polecenia umożliwiają porównanie sum kontrolnych klucza prywatnego, CSR-a (Żądania Podpisania Certyfikatu) i certyfikatu SSL.


Sprawdzenie sumy kontrolnej klucza prywatnego:

openssl rsa -in mojadomena.key -modulus -noout | openssl md5

Przykładowy wynik działania:

ccd4ca8dc071f3a61b580b7e7427a7cf

Sprawdzenie sumy kontrolnej CSR-a (Żądania Podpisania Certyfikatu)

openssl req -in mojadomena.csr -modulus -noout | openssl md5

Przykładowy wynik działania:

ccd4ca8dc071f3a61b580b7e7427a7cf

Sprawdzenie sumy kontrolnej certyfikatu SSL:

openssl x509 -in mojadomena.pem -modulus -noout | openssl md5

Przykładowy wynik działania:

ccd4ca8dc071f3a61b580b7e7427a7cf

Jeżeli suma kontrolna w każdym z powyższych poleceń jest identyczna (w tym przypadku: ccd4ca8dc071f3a61b580b7e7427a7cf) oznacza to, że:

  • CSR (plik mojadomena.csr) został wygenerowany z użyciem klucza prywatnego umieszczonym w pliku mojadomena.key
  • certyfikat SSL (plik mojadomena.pem) pasuje do klucza prywatnego (plik mojadomena.key)

9. Weryfikacja certyfikatu i CA

Gdzie cacert.pem to plik pobrany z serwera wystawcy.

openssl verify -verbose -CAfile cacert.pem  mojadomena.pem

10. Wygenerowanie CSR-a na podstawie istniejącego certyfikatu SSL

openssl x509 -x509toreq -in mojadomena.pem -out mojadomena.csr -signkey mojadomena.key

11. Konwersja klucza prywatnego z formatu PEM do DER

openssl rsa -inform PEM -in mojadomena.pem -outform DER -out mojadomena.der

12. Konwersja klucza prywatnego z formatu DER do PEM

openssl rsa -inform DER -in mojadomena.der -outform PEM -out mojadomena.pem

13. Konwersja certyfikatu i klucza prywatnego z Apache'a do zaimportowania w IIS na serwerze Windows (z formatu PEM do PKCS#12).

Poniższe polecenie utworzy kopię zapasową certyfikatu, klucza prywatnego i certyfikatów pośrednich w pliku iis.pfx w formacie PKCS#12.

openssl pkcs12 -export -inkey mojadomena.key -in mojadomena.pem -certfile intermediate.pem -out iis.pfx

14. Konwersja certyfikatu z formatu PEM do PKCS#7 (P7B).

Poniższe polecenie utworzy kopię zapasową certyfikatu serwera i certyfikatu pośredniego w pliku mojadomena.pfx w formacie PKCS#7.

openssl crl2pkcs7 -nocrl -certfile mojadomena.pem -out mojadomena.p7b -certfile certyfikat_posredni.cer

15. Konwersja certyfikatu i klucza prywatnego z IIS-a do Apache'a lub innego serwera (z formatu PKCS#12 do PEM).


Konwersja certyfikatu SSL

Poniższe polecenie utworzy plik mojadomena.pem zawierający certyfikat.

openssl pkcs12 -in iis.pfx -clcerts -nokeys -out mojadomena.pem

Konwersja klucza prywatnego

Poniższe polecenie utworzy plik mojadomena.key z kluczem prywatnym zabezpieczonym hasłem.

openssl pkcs12 -in iis.pfx -nocerts -out  mojadomena.key

Poniższe polecenie utworzy plik mojadomena.key z kluczem prywatnym bez hasła

openssl pkcs12 -in iis.pfx -nocerts -nodes -out  mojadomena.key

16. Sprawdzenie poprawności instalacji certyfikatu SSL na serwerze

  • root_ca.cer - plik z certyfikatem Root CA dla właściwego certyfikatu
  • www.moja-domena.pl:443 - adres serwera oraz port (443 - domyślny dla połączeń HTTPS)

Wersja skrócona

openssl s_client -CAfile root_ca.cer -quiet -connect www.moja-domena.pl:443

Przykładowy wynik działania powyższego polecenia

depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify return:1
depth=1 C = US, O = "GeoTrust, Inc.", CN = RapidSSL CA
verify return:1
depth=0 serialNumber = gas3S67znrMS0G-Ak1BxcG0zb6RTNpBx, C = PL, O = www.moja-domena.pl, OU = GT985185119, OU = See www.rapidssl.com/resources/cps (c)10, OU = Domain Control Validated - RapidSSL(R), CN = www.moja-domena.pl
verify return:1

Wersja rozszerzona

openssl s_client -CAfile root_ca.cer -connect www.moja-domena.pl:443

Przykładowy wynik działania powyższego polecenia

CONNECTED(00000003)
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify return:1
depth=1 C = US, O = "GeoTrust, Inc.", CN = RapidSSL CA
verify return:1
depth=0 serialNumber = gas3S67znrMS0G-Ak1BxcG0zb6RTNpBx, C = PL, O = www.moja-domena.pl, OU = GT985185119, OU = See www.rapidssl.com/resources/cps (c)10, OU = Domain Control Validated - RapidSSL(R), CN = www.moja-domena.pl
verify return:1
---
Certificate chain
 0 s:/serialNumber=gas3T67enrMS0G-Ak1BxcG0zs6RTNpBx/C=PL/O=www-moja-domena.pl/OU=GT90180134/OU=See www.rapidssl.com/resources/cps (c)10/OU=Domain Control Validated - RapidSSL(R)/CN=www.moja-domena.pl
   i:/C=US/O=GeoTrust, Inc./CN=RapidSSL CA
 1 s:/C=US/O=GeoTrust, Inc./CN=RapidSSL CA
   i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
 2 s:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
   i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIE2TCCA8GgAwIBAgICAUAwDQYJKoZIhvcNAQEFBQAwPDELMAkGA1UEBhMCVVMx
FzAVBgNVBAoTDkdlb1RydXN0LCBJbmMuMRQwEgYDVQQDEwtSYXBpZFNTTCBDQTAe
Fw0xMDEyMDgxNDQ5NDBaFw0xMTExMTQxOTA2MDZaMIHtMSkwJwYDVQQFEyBnYXMz
VDY3ZW5yTVMwRy1BazFCeGNHMHpzNlJUTnBCeDELMAkGA1UEBhMCUEwxHDAaBgNV
BAoTE3JhcGlkc3NsLmdpZ2FvbmUucGwxEzARBgNVBAsTCkdUOTAxODAxMzQxMTAv
BgNVBAsTKFNlZSB3d3cucmFwaWRzc2wuY29tL3Jlc291cmNlcy9jcHMgKGMpMTAx
LzAtBgNVBAsTJkRvbWFpbiBDb250cm9sIFZhbGlkYXRlZCAtIFJhcGlkU1NMKFIp
MRwwGgYDVQQDExNyYXBpZHNzbC5naWdhb25lLnBsMIIBIjANBgkqhkiG9w0BAQEF
AAOCAQ8AMIIBCgKCAQEArLaestflJoCOIaRwYk5P4eH6wz/I3tHZcwB+fkfbPiuZ
D2TuMdMxGIsVlES/YbQ6dYmbjVFFGQOl9lcX1K4LoDfByVH2W9jH729KKZ05hLWE
6gHiAzkDEsEnxEX8eh+B0NuIHBAbgGgg2gu2D8jamf95tpd3NKnZJ5VFdhRAMwS4
Wihz06KpXadFTnk6Ra4Vo2Qkd8va+UW1aJlk3Qz1uWZonY4DN5aWtBqigCXYfW/k
urYIUnkt0IYWB8xPfl54NtRCnEpSkoAgo2JY3+zjw87Ytuo2aiwFReQwC+4ogD/O
ZiFWwf9ZYBZoTHcQW0/RDdptvUmnkuGcZtclw46CKwIDAQABo4IBMTCCAS0wHwYD
VR0jBBgwFoAUa2k9ahhCSt2PAmU5/TUkhniRFjAwDgYDVR0PAQH/BAQDAgWgMB0G
A1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAeBgNVHREEFzAVghNyYXBpZHNz
bC5naWdhb25lLnBsMEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6Ly9yYXBpZHNzbC1j
cmwuZ2VvdHJ1c3QuY29tL2NybHMvcmFwaWRzc2wuY3JsMB0GA1UdDgQWBBSOQy0O
ebxt/rc1Xlb+zc05dRQygzAMBgNVHRMBAf8EAjAAMEkGCCsGAQUFBwEBBD0wOzA5
BggrBgEFBQcwAoYtaHR0cDovL3JhcGlkc3NsLWFpYS5nZW90cnVzdC5jb20vcmFw
aWRzc2wuY3J0MA0GCSqGSIb3DQEBBQUAA4IBAQBFbkwLXqTdNn/H1MrF7Uhnb8xg
vzquhcOdKrdBmLBLK2O8VNveTwEIe+sJMpb0M+ozjhacbA4c7Amj4Y9ZFHS1UA4B
y56fRr634TOCO+fgUX/H7Xr1dc9tKM9b8s7Tb82V/NkWD7YaRbBS4AUWDW+y31/Q
IUXn98OmuI3SEvEivqGiSaq1aEEjUzC8m6xY/WT/KKg/bC+3b71R5GeWpli5XroO
SU11e7kE+WSCstRSopJzqeDxmuL1NdpfMiDnu4GvrC0ybORd96RxdqBQbe0RSbnE
Fjkv8GyzBh9N8k373v9CFh5dPYrzGylNo+ysCChqPPRYws60zJqkfs6BVkhf
-----END CERTIFICATE-----
subject=/serialNumber=gas3S67znrMS0G-Ak1BxcG0zb6RTNpBx/C=PL/O=www.moja-domena.pl/OU=GT90180134/OU=See www.rapidssl.com/resources/cps (c)10/OU=Domain Control Validated - RapidSSL(R)/CN=www.moja-domena.pl
issuer=/C=US/O=GeoTrust, Inc./CN=RapidSSL CA
---
No client certificate CA names sent
---
SSL handshake has read 3938 bytes and written 409 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: zlib compression
Expansion: zlib compression
SSL-Session:
    Protocol  : TLSv1
    Cipher    : DHE-RSA-AES256-SHA
    Session-ID: 1F3AFADC347E7743904615AA175962936D9E36335CCCDDF2C658E986E31A553F
    Session-ID-ctx:
    Master-Key: 467AA14A3CA9FB415F67CB7B7C6F0DC66ABE9075E0DF11F14126F26D32EBBFE814A397503782DBF29AF54CEDE4DCBCD1
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    TLS session ticket:
    0000 - e3 66 0c 65 55 1c aa ea-61 b7 32 2b f3 13 75 8d   .f.eU...a.2+..u.
    0010 - 69 0e d0 18 f2 35 8e 5c-11 27 fa c5 67 4f 0b d9   i....5.\.'..gO..
    0020 - 9d 7f ab 75 aa 90 4f 57-ba d6 b8 7e 28 45 3d 97   ...u..OW...~(E=.
    0030 - 35 84 15 f1 0a 4c 2e c7-e9 ed 8a f9 bb 44 c8 ca   5....L.......D..
    0040 - 9d 72 59 71 28 07 b3 e2-10 57 db cb 07 32 7f cb   .rYq(....S...2..
    0050 - b7 46 db a2 d9 8b 01 6e-20 ca 13 36 19 63 11 e2   .F.....n ..6.c..
    0060 - 64 70 e1 32 42 fd 3f 3f-1a 49 e9 ea f0 51 a9 66   dp.2B.??.I...Q.f
    0070 - bb dd d8 a2 52 8a df 8f-a6 d6 62 60 dd 53 54 5b   ....R.....b`.ST[
    0080 - 26 31 47 25 73 5b 7e 67-d6 52 36 94 7b a9 aa 97   x1G%s[~g.R6.....
    0090 - 6b 82 1d 60 ca 6a e4 a4-0b 3c d5 33 b5 82 a7 a1   k..`.j.....3....

    Compression: 1 (zlib compression)
    Start Time: 1302325519
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---