0Pricing
Security+ Academy · Lekcja

Struktura certyfikatu X.509

Przeanalizują Państwo pola certyfikatu cyfrowego — podmiot, wystawcę, okres ważności, klucz publiczny i rozszerzenia — oraz zrozumieją znaczenie każdego z nich.

Struktura certyfikatu X.509 to bezpłatna lekcja Security+ Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Security+ Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Security+ Academy zawiera 4 lekcji w sumie.

Czym jest certyfikat X.509?

Certyfikat X.509 to ustandaryzowany dokument cyfrowy, który wiąże klucz publiczny z tożsamością. Standard X.509 (zdefiniowany w dokumencie RFC 5280) określa format, pola i rozszerzenia używane na całym świecie w certyfikatach cyfrowych. Każdy certyfikat TLS/HTTPS, certyfikat poczty elektronicznej S/MIME, certyfikat do podpisywania kodu oraz certyfikat uwierzytelniania klienta jest zgodny z formatem X.509. Zrozumienie struktury certyfikatu X.509 pomaga odczytywać informacje o certyfikatach, diagnozować błędy certyfikatów oraz podejmować świadome decyzje dotyczące wdrażania i weryfikowania certyfikatów.

# View an X.509 certificate in human-readable form
openssl x509 -in certificate.pem -noout -text

# Or view a website's certificate directly
openssl s_client -connect example.com:443 2>/dev/null | \
  openssl x509 -noout -text

Wersja, numer seryjny i algorytm

Pierwsze pola certyfikatu X.509 określają jego podstawową tożsamość. Wersja: X.509 v3 to aktualny standard (wersja v3 wprowadziła rozszerzenia). Numer seryjny: unikalna liczba całkowita przypisana przez wystawiający urząd certyfikacji, która identyfikuje konkretny certyfikat — jest używana na listach CRL (listach unieważnień) do unieważniania pojedynczych certyfikatów. Algorytm podpisu: określa algorytm użyty przez urząd certyfikacji do podpisania certyfikatu (np. sha256WithRSAEncryption lub ecdsa-with-SHA256). To pole występuje dwukrotnie: raz w TBSCertificate i raz w zewnętrznym kontenerze podpisu — wartości muszą być zgodne.

# Certificate header fields
# Version: 3 (v3 = supports extensions)
# Serial Number:
#     30:4b:7e:bf:36:e3:46:a8
# Signature Algorithm: sha256WithRSAEncryption

# The serial number is used for revocation:
# CRL lists serial numbers of revoked certificates from this CA

Pola wystawcy i podmiotu

Dwa najważniejsze pola certyfikatu określają uczestniczące w nim strony. Pole Issuer identyfikuje urząd certyfikacji, który podpisał certyfikat (np. CN=DigiCert Global CA G2, O=DigiCert Inc, C=US). Pole Subject identyfikuje podmiot, któremu wydano certyfikat (np. CN=*.example.com, O=Example Corp, C=US). W przypadku certyfikatu TLS rozszerzenie Common Name (CN) lub Subject Alternative Name (SAN) określa, dla jakich nazw domen certyfikat jest ważny. Przeglądarki porównują żądaną nazwę hosta z tymi polami.

# Extract Issuer and Subject
openssl x509 -in cert.pem -noout -subject -issuer
# subject=CN = *.google.com, O = Google LLC, L = Mountain View, ST = California, C = US
# issuer=CN = GTS CA 1C3, O = Google Trust Services LLC, C = US

# Check Subject Alternative Names (critical for hostname validation)
openssl x509 -in cert.pem -noout -ext subjectAltName
# DNS:*.google.com, DNS:google.com

Okres ważności: notBefore i notAfter

Okres ważności określa, kiedy certyfikat jest aktywny. Składa się z dwóch znaczników czasu: notBefore (przed tą datą certyfikat nie jest jeszcze ważny) oraz notAfter (po tej dacie certyfikat jest wygasły). Klienci TLS sprawdzają, czy bieżący czas mieści się w tym przedziale. Certyfikaty użyte poza okresem ważności powodują błąd certyfikatu w przeglądarkach i muszą zostać odnowione. Współczesną dobrą praktyką jest wydawanie certyfikatów krótkoterminowych (90-dniowych, tak jak w Let's Encrypt), aby ograniczyć zagrożenie w przypadku przejęcia klucza prywatnego między wydaniem a wygaśnięciem certyfikatu.

# Check certificate expiry dates
openssl x509 -in cert.pem -noout -dates
# notBefore=Jan  1 00:00:00 2026 GMT
# notAfter=Mar 31 23:59:59 2026 GMT

# Check how many days until expiry
echo | openssl s_client -connect example.com:443 2>/dev/null | \
  openssl x509 -noout -enddate
# notAfter=Jun 15 12:00:00 2026 GMT

Pole klucza publicznego

Podstawowym elementem certyfikatu jest pole Subject Public Key Info, które zawiera certyfikowany klucz publiczny i określa algorytm, z którym jest używany. W przypadku certyfikatu RSA pole to zawiera moduł i wykładnik klucza publicznego RSA oraz jego długość w bitach (2048, 4096). W przypadku certyfikatu ECC zawiera nazwę krzywej (np. prime256v1) i punkt klucza publicznego. Urząd certyfikacji nie generuje tej pary kluczy — wnioskodawca certyfikatu generuje własną parę kluczy i przesyła w Certificate Signing Request (CSR) wyłącznie klucz publiczny.

# Generate a key pair and CSR (Certificate Signing Request)
# First, generate the private key
openssl genrsa -out server.key 2048

# Create a CSR containing the public key and subject info
openssl req -new -key server.key -out server.csr \
  -subj '/CN=www.example.com/O=Example Corp/C=US'

# The CSR is sent to the CA for signing
# The CA returns the signed X.509 certificate
# Private key NEVER leaves your possession

Rozszerzenia X.509 v3

Wersja X.509 v3 wprowadziła rozszerzenia, które znacznie zwiększają możliwości certyfikatów. Rozszerzenia mogą być krytyczne (klient, który nie potrafi obsłużyć takiego rozszerzenia, musi odrzucić certyfikat) lub niekrytyczne (można je zignorować, jeśli nie są rozpoznawane). Najważniejsze rozszerzenia to: Subject Alternative Name (SAN) — dodatkowe nazwy domen lub adresy IP objęte certyfikatem; Key Usage — ogranicza operacje, do których można użyć klucza (podpis cyfrowy, szyfrowanie klucza); Extended Key Usage — dodatkowo ogranicza przeznaczenie klucza (uwierzytelnianie serwera TLS, uwierzytelnianie klienta, podpisywanie kodu); oraz Basic Constraints — wskazuje, czy podmiot jest urzędem certyfikacji.

# View X.509 v3 extensions
openssl x509 -in cert.pem -noout -text | grep -A 20 'X509v3 extensions'
# X509v3 Key Usage: critical
#   Digital Signature, Key Encipherment
# X509v3 Extended Key Usage:
#   TLS Web Server Authentication, TLS Web Client Authentication
# X509v3 Subject Alternative Name:
#   DNS:example.com, DNS:www.example.com
# X509v3 Basic Constraints: critical
#   CA:FALSE

Subject Alternative Name (SAN) a Common Name

Historycznie pole Common Name (CN) w wyróżnionym polu Subject służyło do określania głównej nazwy domeny. Współczesne certyfikaty używają zamiast tego Subject Alternative Names (SANs), ponieważ przeglądarki wycofały dopasowywanie na podstawie CN (RFC 2818) na rzecz SAN. SAN pozwala jednemu certyfikatowi obejmować wiele domen (certyfikaty multi-SAN) lub wszystkie poddomeny danej domeny (certyfikaty wildcard: *.example.com). Wieloznacznik SAN obejmuje tylko jeden poziom — *.example.com obejmuje www.example.com, ale nie sub.www.example.com.

Punkt dystrybucji CRL i rozszerzenie OCSP

Dwa kluczowe rozszerzenia informują klientów, jak sprawdzić, czy certyfikat został unieważniony przed upływem terminu ważności. CRL Distribution Points (CDP): zawiera adresy URL, z których można pobrać listę unieważnionych certyfikatów urzędu certyfikacji. Authority Information Access (AIA): zawiera adres URL respondera OCSP (Online Certificate Status Protocol) urzędu certyfikacji, służącego do sprawdzania unieważnienia w czasie rzeczywistym. Współczesne klienty preferują OCSP zamiast pobierania list CRL, ponieważ listy CRL mogą być dużymi plikami. Podpis cyfrowy urzędu certyfikacji dołączony do odpowiedzi OCSP zapewnia klientom autentyczne informacje o statusie unieważnienia.

# Check OCSP status of a certificate
openssl ocsp -issuer intermediate_ca.pem \
  -cert server_cert.pem \
  -url http://ocsp.digicert.com \
  -text
# Response shows: good, revoked, or unknown
# server_cert.pem: good
# This Update: Jun 21 00:00:00 2026 GMT

Formaty certyfikatów: PEM, DER, PFX

Certyfikaty X.509 występują w kilku formatach kodowania, z którymi można spotkać się w praktyce. PEM (Privacy Enhanced Mail): zakodowany w base64 format DER otoczony nagłówkami -----BEGIN CERTIFICATE-----. Jest czytelny dla człowieka i używany w systemach Linux oraz na serwerach Apache/nginx. DER (Distinguished Encoding Rules): format binarny. Jest używany w aplikacjach Java oraz w niektórych kontekstach systemu Windows. PFX/PKCS#12: format kontenera, który łączy certyfikat, jego łańcuch i klucz prywatny w jednym pliku chronionym hasłem. Jest używany w Windows IIS oraz podczas eksportowania certyfikatów wraz z kluczami prywatnymi. P7B/PKCS#7: zawiera wyłącznie łańcuch certyfikatów, bez klucza prywatnego, i jest używany w magazynach certyfikatów systemu Windows.

# Convert between certificate formats
# PEM to DER
openssl x509 -in cert.pem -outform DER -out cert.der

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

# Export certificate + private key to PFX (for Windows IIS)
openssl pkcs12 -export -in cert.pem -inkey private.key \
  -certfile chain.pem -out cert.pfx -passout pass:ExportPassword

Certificate Transparency (rejestry CT)

Certificate Transparency (CT) to mechanizm, który wymaga od urzędów certyfikacji rejestrowania wszystkich wydanych certyfikatów w publicznie kontrolowanych rejestrach. Dzięki temu każdy może monitorować, czy dla jego domen nie wydano nieautoryzowanych certyfikatów. Chrome i Safari wymagają, aby certyfikaty TLS były uwzględnione w rejestrach CT. SCT (Signed Certificate Timestamp) to dowód uwzględnienia certyfikatu w rejestrze, osadzany w certyfikacie lub dostarczany za pośrednictwem rozszerzenia TLS. Rejestry CT szybko ujawniają nieprawidłowe wydania — jeśli urząd certyfikacji omyłkowo wyda certyfikat dla Państwa domeny, zobaczą go Państwo w rejestrach takich jak crt.sh, zanim atakujący zdążą go wykorzystać.

# Search for all certificates issued for a domain using crt.sh
# This would be done via browser or API:
# https://crt.sh/?q=example.com

# Check CT log inclusion in a certificate
openssl x509 -in cert.pem -noout -text | grep -A 5 'CT Precertificate'
# X509v3 extension: CT Precertificate SCTs (critical)
#   Signed Certificate Timestamp:
#     Version: v1 (0x0)
#     Log ID: A4:B9...

Podpis urzędu certyfikacji na certyfikacie

Ostatnim elementem certyfikatu X.509 jest podpis cyfrowy urzędu certyfikacji. Urząd certyfikacji oblicza skrót wszystkich danych certyfikatu (TBSCertificate), a następnie podpisuje ten skrót własnym kluczem prywatnym. To właśnie ten podpis sprawia, że certyfikat jest godny zaufania — każdy może go zweryfikować za pomocą klucza publicznego urzędu certyfikacji (znajdującego się w certyfikacie tego urzędu). Użyty algorytm podpisu (wymieniony w polu podpisu) musi odpowiadać algorytmowi określonemu wcześniej w certyfikacie. Każda modyfikacja certyfikatu po jego podpisaniu unieważnia podpis, zapewniając integralność certyfikatu.

# Verify that a certificate was signed by a specific CA
openssl verify -CAfile ca_chain.pem server_cert.pem
# server_cert.pem: OK

# If the signature is invalid or the chain is broken:
# server_cert.pem: C = US, O = Example, CN = www.example.com
# error 20 at 0 depth lookup: unable to get local issuer certificate

Szybki test

Sprawdź swoją znajomość zagadnień CompTIA Security+ (SY0-701) omówionych w tej lekcji.

Podsumowanie lekcji

W tej lekcji poznali Państwo następujące zagadnienia: certyfikat X.509 zawiera wersję, numer seryjny, wystawcę, podmiot, okres ważności, klucz publiczny oraz rozszerzenia v3; rozszerzenie SAN określa, które nazwy hostów obejmuje certyfikat; rozszerzenia CDP i AIA wskazują punkty końcowe służące do sprawdzania unieważnienia; a rejestry CT zapewniają publicznie dostępne ścieżki audytowe wydawania certyfikatów. Następnie omówimy cykl życia i unieważnianie certyfikatów.

Często zadawane pytania

Czy lekcja „Struktura certyfikatu X.509” jest bezpłatna?

Tak — pełny tekst „Struktura certyfikatu X.509” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Security+ Academy, przejdź na CoddyKit PRO. Kurs Security+ Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Struktura certyfikatu X.509”?

Przeanalizują Państwo pola certyfikatu cyfrowego — podmiot, wystawcę, okres ważności, klucz publiczny i rozszerzenia — oraz zrozumieją znaczenie każdego z nich. Ćwiczysz Security+ Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Security+ Academy?

Nie wymagamy żadnego doświadczenia. Security+ Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Struktura certyfikatu X.509”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Security+ Academy?

Tak. Każda lekcja Security+ Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Urzędy certyfikacji i łańcuchy zaufania
  2. Struktura certyfikatu X.509
  3. Cykl życia certyfikatu i jego unieważnianie
  4. Zastosowania PKI: HTTPS, S/MIME i podpisywanie kodu
← Powrót do Security+ Academy