13.06.2022
Obsługa programu OpenSSL
BezpieczeństwoWWW
openssl

Ostatnia aktualizacja: 04.04.2023 r.

Biblioteki OpenSSL to bardzo znana, otwarta i wieloplatformowa implementacja protokołów SSL i TLS oraz algorytmów kryptograficznych, którą z powodzeniem można używać na systemach Unix, Linux i Windows.

W przypadku instalacji na systemie Windows, program najlepiej zainstalować bezpośrednio na dysku C:\, a certyfikaty najlepiej generować bezpośrednio w katalogu C:\OpenSSL-Win64\bin.

Konfiguracja

  1. Generowanie certyfikatu będącego jednocześnie certyfikatem CA i końcowym:
    1. Generowanie klucza prywatnego.

      Dodanie np. przełącznika -aes256 pozwoli zaszyfrować generowany klucz prywatny za pomocą hasła.

      openssl genrsa -writerand ./.rnd -out ./nazwa.key
    2. Generowanie pliku CSR (Certificate Signing Request).
      openssl req -new -key ./nazwa.key -sha256 -out ./nazwa.csr
    3. Generowanie Self-Signed Certificate.

      Poniższe polecenie wykorzystuje plik v3.ext w celu zaaplikowania do do certyfikatu dodatkowych parametrów. Metoda zalecana w celu uniknięcia problemów z nowszymi wersjami przeglądarek.

      basicConstraints       = CA:true
      subjectKeyIdentifier   = hash
      authorityKeyIdentifier = keyid,issuer
      keyUsage               = digitalSignature,nonRepudiation,dataEncipherment
      extendedKeyUsage       = serverAuth,clientAuth
      subjectAltName         = DNS:nazwa,DNS:localhost,IP:192.168.1.2,IP:127.0.0.1
      openssl x509 -req -extfile ./v3.ext -sha256 -days 365 -signkey ./nazwa.key -in ./nazwa.csr -out ./nazwa.crt
    4. Przykładowy skrypt.
      openssl genrsa -writerand ./.rnd -out ./server.key
      openssl req -new -key ./server.key -sha256 -out ./server.csr
      openssl x509 -req -extfile ./v3.ext -sha256 -days 365 -signkey ./server.key -in ./server.csr -out ./server.crt
      
      mkdir C:\xampp\apache\conf\ssl.key
      mkdir C:\xampp\apache\conf\ssl.csr
      mkdir C:\xampp\apache\conf\ssl.crt
      
      copy server.key C:\xampp\apache\conf\ssl.key
      copy server.csr C:\xampp\apache\conf\ssl.csr
      copy server.crt C:\xampp\apache\conf\ssl.crt
      
    5. Sprawdzenie wygenerowanych plików:
      1. klucz prywatnego,
        openssl rsa -check -in nazwa.key
      2. plik CSR (Certificate Signing Request),
        openssl req -text -noout -verify -in nazwa.csr
      3. certyfikat.
        openssl x509 -text -noout -in nazwa.crt
    6. Debuggowanie.

      Sprawdzenie sumy MD5 certyfikatu w celu upewnienia się, że pasuje do tego co jest w pliku CSR lub kluczu prywatnym.

      openssl x509 -noout -modulus -in nazwa.crt | openssl md5
      openssl req -noout -modulus -in nazwa.csr | openssl md5
      openssl rsa -noout -modulus -in nazwa.key | openssl md5

Tips&Tricks

  1. Zdalne sprawdzenie komunikacji SSL.
    sudo openssl s_client -servername archiwum.grzegorzwita.it -connect archiwum.grzegorzwita.it:imaps

Rozwiązywanie problemów

  1. Strona hula sobie na Apache`u (XAMPP) zainstalowanym na Windows Server 2012 R2 w Azure. Certyfikat pierwotnie kupiony w Asseco Certum. Odnawiam certyfikat i po całej procedurze zakupowej na swoim koncie widzę, że do pobrania mam plik PFX, a Apache potrzebuje 3 pliki (KEY, CSR oraz CRT) do umieszczenia w 4 katalogach (ssl, ssl.crt, ssl.csr oraz ss.key):
    1. Wygenerowanie pliku KEY z pliku PFX.
      openssl pkcs12 -in nazwa_pliku.pfx -nocerts -out nazwa_pliku.key -nodes
    2. Wygenerowanie pliku CRT z pliku PFX.
      openssl pkcs12 -in domena.pfx -nokeys -clcerts -out domena.crt
    3. Wygenerowanie pliku CSR z plików KEY i CRT.
      openssl x509 -in nazwa_pliku.crt -signkey nazwa_pliku.key -x509toreq -out nazwa_pliku.csr

Dodatkowe informacje

0 komentarzy

Szybki kontakt

Masz pytania? Napisz