1.  [Strona główna](/) ›
2.  [Baza wiedzy](/baza-wiedzy/) ›
3.  OpenSSL - certyfikaty i konfiguracja

# OpenSSL - generowanie certyfikatów, kluczy i konwersja formatów

Opublikowano: 10 kwietnia 2026 · Kategoria: Bezpieczeństwo

⚡ W skrócie · 8 min czytania

-   OpenSSL od podstaw: generowanie kluczy RSA i EC, tworzenie CSR, certyfikaty self-signed, weryfikacja chain, sprawdzanie certyfikatów, konwersja PEM/DER/PFX.
-   Generowanie kluczy prywatnych - RSA i ECDSA.
-   Tworzenie CSR - Certificate Signing Request.
-   Certyfikat self-signed - do testów i sieci wewnętrznej.
-   Weryfikacja łańcucha certyfikatów.

OpenSSL to szwajcarski scyzoryk świata kryptografii - biblioteka i narzędzie CLI używane do generowania kluczy prywatnych, tworzenia CSR (Certificate Signing Request), wystawiania certyfikatów self-signed, weryfikacji łańcucha CA i konwersji między formatami (PEM, DER, PFX). Każdy administrator Linuksa prędzej czy później musi z niego skorzystać: przy konfiguracji SSL dla własnego serwera, budowaniu wewnętrznej PKI, debugowaniu problemów z certyfikatami lub przygotowaniu certyfikatu dla aplikacji Java. Ten artykuł przeprowadzi przez wszystkie najważniejsze operacje z komentarzem wyjaśniającym co i dlaczego.

## Generowanie kluczy prywatnych - RSA i ECDSA

```
# --- KLUCZE RSA ---

# RSA 2048-bit (minimum, nadal bezpieczny i kompatybilny ze starszymi systemami)
openssl genrsa -out private.key 2048

# RSA 4096-bit (wolniejszy TLS handshake, ale wieksze bezpieczenstwo)
openssl genrsa -out private.key 4096

# RSA z szyfrowaniem klucza haslem (wymaga podania hasla przy kazdym uzyciu)
openssl genrsa -aes256 -out private-encrypted.key 4096

# Sprawdz klucz
openssl rsa -in private.key -text -noout

# Wyodrebnij klucz publiczny z prywatnego
openssl rsa -in private.key -pubout -out public.key

# --- KLUCZE ECDSA (szybsze, krotsze, nowoczesne) ---

# Krzywa P-256 (prime256v1) - najlepsze wsparcie przegladarek, OK dla TLS
openssl ecparam -name prime256v1 -genkey -noout -out ec-private.key

# Krzywa P-384 (secp384r1) - wyzsze bezpieczenstwo, uzywane przez rzady i finanse
openssl ecparam -name secp384r1 -genkey -noout -out ec-private-384.key

# Krzywa X25519 (dla TLS 1.3 key exchange, nie do certyfikatow)
# X25519 jest uzywana do ECDHE, nie jako klucz certyfikatu

# Sprawdz klucz ECDSA
openssl ec -in ec-private.key -text -noout

# Lista dostepnych krzywych
openssl ecparam -list_curves
```

## Tworzenie CSR - Certificate Signing Request

```
# CSR dla certyfikatu RSA - interaktywnie (pyta o CN, O, C itd.)
openssl req -new -key private.key -out request.csr

# CSR bez pytania - z parametrami w linii komend
openssl req -new -key private.key -out request.csr \
  -subj "/C=PL/ST=Mazowieckie/L=Warszawa/O=Moja Firma Sp z.o.o/CN=example.com"

# CSR z SAN (Subject Alternative Names) - wymagany przez nowoczesne CA (Chrome 58+)
# Stworz plik konfiguracyjny:
cat > san.cnf << 'EOF'
[req]
default_bits       = 2048
distinguished_name = req_distinguished_name
req_extensions     = v3_req
prompt             = no

[req_distinguished_name]
C  = PL
ST = Mazowieckie
L  = Warszawa
O  = Moja Firma
CN = example.com

[v3_req]
subjectAltName = @alt_names

[alt_names]
DNS.1 = example.com
DNS.2 = www.example.com
DNS.3 = api.example.com
EOF

openssl req -new -key private.key -out request.csr -config san.cnf

# Sprawdz zawartosc CSR
openssl req -in request.csr -text -noout
openssl req -in request.csr -verify -noout
```

## Certyfikat self-signed - do testów i sieci wewnętrznej

```
# Self-signed na jeden rok (szybko, klucz + cert w jednym kroku)
openssl req -x509 -newkey rsa:2048 -keyout self.key -out self.crt \
  -days 365 -nodes \
  -subj "/C=PL/O=Dev/CN=localhost"

# Self-signed z SAN (wymaga pliku konfiguracyjnego)
openssl req -x509 -newkey rsa:4096 -keyout self.key -out self.crt \
  -days 730 -nodes \
  -config san.cnf \
  -extensions v3_req

# Self-signed ECDSA (szybszy, nowszy)
openssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:P-256 \
  -keyout ec-self.key -out ec-self.crt \
  -days 365 -nodes \
  -subj "/C=PL/O=Dev/CN=localhost"

# Sprawdz certyfikat
openssl x509 -in self.crt -text -noout
openssl x509 -in self.crt -noout -subject -issuer -dates

# Weryfikacja pary klucz-certyfikat (musza byc zgodne)
# Jesli MD5 hash sie zgadza - klucz pasuje do certyfikatu
openssl x509 -noout -modulus -in cert.pem | md5sum
openssl rsa -noout -modulus -in private.key | md5sum
```

## Weryfikacja łańcucha certyfikatów

```
# Sprawdz certyfikat zdalnego serwera
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null \
  | openssl x509 -noout -text

# Sprawdz tylko daty waznosci
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null \
  | openssl x509 -noout -dates

# Sprawdz czy certyfikat wygasa za mniej niz 30 dni (exit code 1 = wygasa)
echo | openssl s_client -connect example.com:443 2>/dev/null \
  | openssl x509 -noout -checkend 2592000
# checkend N = liczba sekund od teraz (2592000 = 30 dni)

# Weryfikacja lancucha CA (potrzebny plik ca-bundle)
openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt cert.pem

# Weryfikacja z lokalnym CA (dla wewnetrznych certyfikatow)
openssl verify -CAfile my-ca.crt server.crt

# Sprawdz kompletny lancuch (chain) certyfikatow serwera
openssl s_client -connect example.com:443 -showcerts 2>/dev/null | \
  openssl x509 -noout -issuer -subject

# Pobierz certyfikat serwera do pliku
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null \
  | openssl x509 > server.pem
```

## Konwersja formatów - PEM, DER, PFX/PKCS12

Format

Rozszerzenia

Używany przez

PEM

.pem, .crt, .cer, .key

Linux, Apache, Nginx, Let's Encrypt

DER

.der, .cer

Java, Android, stary Internet Explorer

PFX / PKCS12

.pfx, .p12

Windows IIS, .NET, Tomcat, eksport

PKCS7 / P7B

.p7b, .p7c

Windows, Java - tylko certyfikaty (bez klucza)

```
# --- Konwersja PEM ↔ DER ---

# PEM → DER (dla Javy, Android)
openssl x509 -in cert.pem -outform DER -out cert.der

# DER → PEM
openssl x509 -in cert.der -inform DER -outform PEM -out cert.pem

# Klucz PEM → DER
openssl rsa -in private.key -outform DER -out private.der

# --- Tworzenie PFX/PKCS12 (cert + klucz + chain) ---

# Pakuj do PFX (dla Windows IIS, .NET)
openssl pkcs12 -export \
  -in cert.pem \
  -inkey private.key \
  -certfile chain.pem \
  -out bundle.pfx \
  -name "Moj serwer" \
  -password pass:mypassword

# Rozpakowywanie PFX → PEM
openssl pkcs12 -in bundle.pfx -nokeys -out cert.pem -password pass:mypassword
openssl pkcs12 -in bundle.pfx -nocerts -nodes -out private.key -password pass:mypassword

# Wszystko z PFX naraz (bez szyfrowania klucza)
openssl pkcs12 -in bundle.pfx -nodes -out bundle-all.pem -password pass:mypassword

# --- Tworzenie fullchain dla Nginx (certyfikat + intermediate CA) ---
cat cert.pem intermediate-ca.pem > fullchain.pem
# Kolejnosc jest wazna: najpierw certyfikat servera, potem CA chain
```

## Najczęstsze pytania

Czym różni się certyfikat RSA od ECDSA? +

RSA to starszy algorytm oparty na faktoryzacji dużych liczb. Klucze RSA 2048-bit są bezpieczne, ale duże (wolniejszy TLS handshake). ECDSA (Elliptic Curve Digital Signature Algorithm) używa kryptografii krzywych eliptycznych - klucz 256-bit (P-256) oferuje bezpieczeństwo porównywalne z RSA 3072-bit, ale jest kilkakrotnie szybszy. Większość nowoczesnych serwerów i CDN wspiera ECDSA. Dla maksymalnej kompatybilności (starsze systemy, Java 6) zostań przy RSA 2048+.

Co to jest CSR i do czego jest potrzebny? +

CSR (Certificate Signing Request) to plik zawierający klucz publiczny i informacje o podmiocie (CN, O, C) podpisane kluczem prywatnym. CSR wysyłasz do CA (Certificate Authority), który weryfikuje twoją tożsamość i wystawia certyfikat SSL. Klucz prywatny nigdy nie opuszcza twojego serwera - CA widzi tylko klucz publiczny z CSR. Dla certyfikatów Let's Encrypt ACME protokół automatycznie generuje CSR - nie musisz robić tego ręcznie.

Czym różni się format PEM od DER i PFX/PKCS12? +

PEM (Privacy Enhanced Mail) to Base64-zakodowany format z nagłówkami -----BEGIN CERTIFICATE----- i -----END CERTIFICATE-----. Jest najczęściej używany przez Linux/Apache/Nginx. DER (Distinguished Encoding Rules) to binarny format PEM - używany przez Java, Android i stare systemy Windows. PFX/PKCS12 to kontener łączący certyfikat + klucz prywatny + opcjonalnie chain CA w jeden plik chroniony hasłem - używany przez Windows IIS, .NET i eksport/import certyfikatów.

Jak sprawdzić ważność certyfikatu SSL z linii komend? +

Z pliku: openssl x509 -in cert.pem -text -noout | grep -A2 "Validity". Ze zdalnego serwera: echo | openssl s\_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates. Automatyczne sprawdzanie wygaśnięcia: openssl s\_client -connect example.com:443 2>/dev/null | openssl x509 -noout -checkend 2592000 (sprawdza czy certyfikat wygasa w ciągu 30 dni, exit code 1 jeśli tak).

## Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.

Contabo

VPS z pełnym kontrolą nad SSL/TLS i własną PKI infrastrukturą

VPS + root

[Aktywuj rabat →](/out/contabo/#reklama "Contabo")

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/contabo/)

Mikr.us

Budżetowy VPS do nauki OpenSSL i konfiguracji TLS

Dev/Test

[Aktywuj rabat →](/out/mikrus/#reklama "Mikr.us")

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/mikrus/)

LH.pl

Hosting z automatycznym SSL Let's Encrypt

Auto SSL

[Aktywuj rabat →](/out/lh-pl/#reklama "LH.pl")

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/lh-pl/)

## Powiązane strony

-   [SSL Let's Encrypt - automatyzacja](/baza-wiedzy/ssl-lets-encrypt-automatyzacja/)
-   [Nginx security hardening](/baza-wiedzy/nginx-security-hardening/)
-   [Bezpieczeństwo VPS - checklist](/baza-wiedzy/bezpieczenstwo-vps-checklist/)
-   [Wszystkie artykuły](/baza-wiedzy/)
-   [OpenVPN na VPS - serwer VPN krok po kroku
    
    OpenVPN serwer: Easy-RSA CA, gen-req, sign-req, DH params, ta.key, server.conf z routingiem, generator .ovpn klientów,…
    
    ](/baza-wiedzy/openvpn-konfiguracja-vps/)
-   [Certyfikaty SSL OV i EV - kiedy warto płacić?
    
    Porównanie certyfikatów SSL DV, OV i EV. Kiedy warto kupić certyfikat komercyjny OV/EV, koszty, dostawcy (DigiCert,…
    
    ](/baza-wiedzy/ssl-certyfikaty-ov-ev-komercyjne/)
-   [Certyfikat SSL - co to jest, dlaczego potrzebujesz, darmowy vs płatny
    
    Kompletny przewodnik po certyfikatach SSL: DV, OV, EV, Let's Encrypt. Dlaczego HTTPS stał się standardem, jak działa…
    
    ](/baza-wiedzy/ssl-certyfikat-co-to-jest/)
-   [Jaki VPS wybrać?](/jaki-vps-wybrac/)

Autor: [Redakcja HostGrade.pl](/autorzy/) Zespół redakcyjny · Aktualizacja: 25 września 2026

Artykuły HostGrade.pl przygotowuje i aktualizuje redakcja serwisu. Ceny startowe, ceny odnowienia i warunki planów sprawdzamy w cennikach i regulaminach dostawców, a potem liczymy całkowity koszt za 2 lata (cena startowa plus odnowienia). Zasady zbierania danych i liczenia kosztów opisujemy na stronie Metodologia. Linki partnerskie oznaczamy jako #reklama.

[O redakcji i metodologii →](/autorzy/)