Certificates

Support HackTricks

Use Trickest to easily build and automate workflows powered by the world's most advanced community tools. Get Access Today:

Šta je sertifikat

Javni ključ sertifikat je digitalni ID koji se koristi u kriptografiji da dokaže da neko poseduje javni ključ. Uključuje detalje o ključevi, identitet vlasnika (subjekt) i digitalni potpis od poverljive vlasti (izdavača). Ako softver veruje izdavaču i potpis je validan, sigurna komunikacija sa vlasnikom ključa je moguća.

Sertifikati se uglavnom izdaju od strane sertifikacionih tela (CA) u okviru infrastrukture javnog ključa (PKI). Druga metoda je mreža poverenja, gde korisnici direktno verifikuju ključeve jedni drugih. Uobičajeni format za sertifikate je X.509, koji se može prilagoditi specifičnim potrebama kako je navedeno u RFC 5280.

x509 Uobičajena polja

Uobičajena polja u x509 sertifikatima

U x509 sertifikatima, nekoliko polja igra ključne uloge u obezbeđivanju validnosti i sigurnosti sertifikata. Evo pregleda ovih polja:

  • Broj verzije označava verziju x509 formata.

  • Serijski broj jedinstveno identifikuje sertifikat unutar sistema Sertifikacionog tela (CA), uglavnom za praćenje opoziva.

  • Polje Subjekt predstavlja vlasnika sertifikata, što može biti mašina, pojedinac ili organizacija. Uključuje detaljnu identifikaciju kao što su:

  • Uobičajeno ime (CN): Domeni pokriveni sertifikatom.

  • Zemlja (C), Lokacija (L), Država ili pokrajina (ST, S, ili P), Organizacija (O), i Organizaciona jedinica (OU) pružaju geografske i organizacione detalje.

  • Istaknuto ime (DN) obuhvata punu identifikaciju subjekta.

  • Izdavač detaljno opisuje ko je verifikovao i potpisao sertifikat, uključujući slična podpolja kao Subjekt za CA.

  • Period validnosti označen je vremenskim oznakama Ne pre i Ne posle, osiguravajući da sertifikat ne bude korišćen pre ili posle određenog datuma.

  • Sekcija Javni ključ, koja je ključna za sigurnost sertifikata, specificira algoritam, veličinu i druge tehničke detalje javnog ključa.

  • x509v3 ekstenzije poboljšavaju funkcionalnost sertifikata, specificirajući Korišćenje ključa, Prošireno korišćenje ključa, Alternativno ime subjekta, i druge osobine za fino podešavanje primene sertifikata.

Korišćenje ključa i ekstenzije

  • Korišćenje ključa identifikuje kriptografske primene javnog ključa, kao što su digitalni potpis ili enkripcija ključa.

  • Prošireno korišćenje ključa dodatno sužava slučajeve korišćenja sertifikata, npr. za TLS autentifikaciju servera.

  • Alternativno ime subjekta i Osnovna ograničenja definišu dodatne nazive hostova pokrivene sertifikatom i da li je to CA ili sertifikat krajnjeg entiteta, redom.

  • Identifikatori kao što su Identifikator ključa subjekta i Identifikator ključa vlasti osiguravaju jedinstvenost i praćenje ključeva.

  • Pristup informacijama o vlasti i Tačke distribucije CRL pružaju puteve za verifikaciju izdavača CA i proveru statusa opoziva sertifikata.

  • CT Precertifikat SCTs nude evidencije transparentnosti, što je ključno za javno poverenje u sertifikat.

# Example of accessing and using x509 certificate fields programmatically:
from cryptography import x509
from cryptography.hazmat.backends import default_backend

# Load an x509 certificate (assuming cert.pem is a certificate file)
with open("cert.pem", "rb") as file:
cert_data = file.read()
certificate = x509.load_pem_x509_certificate(cert_data, default_backend())

# Accessing fields
serial_number = certificate.serial_number
issuer = certificate.issuer
subject = certificate.subject
public_key = certificate.public_key()

print(f"Serial Number: {serial_number}")
print(f"Issuer: {issuer}")
print(f"Subject: {subject}")
print(f"Public Key: {public_key}")

Razlika između OCSP i CRL distribucionih tačaka

OCSP (RFC 2560) uključuje klijenta i odgovarača koji rade zajedno kako bi proverili da li je digitalni javni ključ sertifikat opozvan, bez potrebe za preuzimanjem celog CRL. Ova metoda je efikasnija od tradicionalnog CRL, koji pruža listu opozvanih serijskih brojeva sertifikata, ali zahteva preuzimanje potencijalno velikog fajla. CRL-ovi mogu sadržati do 512 unosa. Više detalja je dostupno ovde.

Šta je transparentnost sertifikata

Transparentnost sertifikata pomaže u borbi protiv pretnji vezanih za sertifikate osiguravajući da je izdavanje i postojanje SSL sertifikata vidljivo vlasnicima domena, CA-ima i korisnicima. Njeni ciljevi su:

  • Sprečavanje CA-a da izdaju SSL sertifikate za domen bez znanja vlasnika domena.

  • Uspostavljanje otvorenog sistema revizije za praćenje greškom ili zlonamerno izdatih sertifikata.

  • Zaštita korisnika od prevarantskih sertifikata.

Sertifikati logovi

Sertifikati logovi su javno revizibilni, samo za dodavanje zapisi sertifikata, koje održavaju mrežne usluge. Ovi logovi pružaju kriptografske dokaze za revizijske svrhe. Izdavaoci i javnost mogu podnositi sertifikate ovim logovima ili ih pretraživati radi verifikacije. Dok tačan broj log servera nije fiksiran, očekuje se da će biti manje od hiljadu globalno. Ove servere mogu nezavisno upravljati CA, ISP ili bilo koja zainteresovana strana.

Upit

Da biste istražili logove transparentnosti sertifikata za bilo koji domen, posetite https://crt.sh/.

Postoje različiti formati za skladištenje sertifikata, svaki sa svojim slučajevima upotrebe i kompatibilnošću. Ovaj pregled pokriva glavne formate i pruža smernice za konvertovanje između njih.

Formati

PEM format

  • Najšire korišćen format za sertifikate.

  • Zahteva odvojene fajlove za sertifikate i privatne ključeve, kodirane u Base64 ASCII.

  • Uobičajene ekstenzije: .cer, .crt, .pem, .key.

  • Primarno koriste Apache i slični serveri.

DER format

  • Binarni format sertifikata.

  • Nedostaju "BEGIN/END CERTIFICATE" izjave koje se nalaze u PEM fajlovima.

  • Uobičajene ekstenzije: .cer, .der.

  • Često se koristi sa Java platformama.

P7B/PKCS#7 format

  • Skladišti se u Base64 ASCII, sa ekstenzijama .p7b ili .p7c.

  • Sadrži samo sertifikate i lance sertifikata, isključujući privatni ključ.

  • Podržava Microsoft Windows i Java Tomcat.

PFX/P12/PKCS#12 format

  • Binarni format koji enkapsulira server sertifikate, međusertifikate i privatne ključeve u jednom fajlu.

  • Ekstenzije: .pfx, .p12.

  • Uglavnom se koristi na Windows-u za uvoz i izvoz sertifikata.

Konvertovanje formata

PEM konverzije su neophodne za kompatibilnost:

  • x509 to PEM

openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem
  • PEM u DER

openssl x509 -outform der -in certificatename.pem -out certificatename.der
  • DER u PEM

openssl x509 -inform der -in certificatename.der -out certificatename.pem
  • PEM u P7B

openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b -certfile CACert.cer
  • PKCS7 u PEM

openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem

PFX konverzije su ključne za upravljanje sertifikatima na Windows-u:

  • PFX u PEM

openssl pkcs12 -in certificatename.pfx -out certificatename.pem
  • PFX to PKCS#8 uključuje dva koraka:

  1. Konvertujte PFX u PEM

openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem
  1. Konvertujte PEM u PKCS8

openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
  • P7B to PFX takođe zahteva dve komande:

  1. Konvertujte P7B u CER

openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
  1. Konvertujte CER i privatni ključ u PFX

openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer

Koristite Trickest za lako kreiranje i automatizaciju radnih tokova pokretanih najnaprednijim alatima zajednice na svetu. Pribavite pristup danas:

Podržite HackTricks

Last updated