hacktricks/crypto-and-stego/certificates.md

12 KiB
Raw Blame History

Sertifikalar

{% hint style="success" %} AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)

HackTricks'i Destekleyin
{% endhint %}


Trickest kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen iş akışlarını kolayca oluşturun ve otomatikleştirin.
Bugün Erişim Alın:

{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=certificates" %}

Sertifika Nedir

Bir ık anahtar sertifikası, birinin bir açık anahtara sahip olduğunu kanıtlamak için kriptografide kullanılan dijital bir kimliktir. Anahtarın detaylarını, sahibinin kimliğini (konu) ve güvenilir bir otoriteden (verici) dijital bir imzayı içerir. Yazılım vericiyi güvenilir bulursa ve imza geçerliyse, anahtarın sahibiyle güvenli iletişim mümkündür.

Sertifikalar genellikle sertifika otoriteleri (CA'lar) tarafından ık anahtar altyapısı (PKI) kurulumunda verilir. Diğer bir yöntem ise güven ağıdır; burada kullanıcılar birbirlerinin anahtarlarını doğrudan doğrular. Sertifikalar için yaygın format X.509 olup, RFC 5280'de belirtildiği gibi belirli ihtiyaçlara uyarlanabilir.

x509 Ortak Alanlar

x509 Sertifikalarında Ortak Alanlar

x509 sertifikalarında, sertifikanın geçerliliğini ve güvenliğini sağlamak için birkaç alan kritik roller üstlenir. Bu alanların bir dökümü:

  • Versiyon Numarası, x509 formatının versiyonunu belirtir.
  • Seri Numarası, sertifikayı bir Sertifika Otoritesi (CA) sisteminde benzersiz olarak tanımlar, esasen iptal takibi için kullanılır.
  • Konu alanı, sertifikanın sahibini temsil eder; bu bir makine, birey veya organizasyon olabilir. Detaylı kimlik bilgilerini içerir:
  • Ortak İsim (CN): Sertifika tarafından kapsanan alanlar.
  • Ülke (C), Yerleşim Yeri (L), Eyalet veya İl (ST, S veya P), Organizasyon (O) ve Organizasyon Birimi (OU) coğrafi ve organizasyonel detaylar sağlar.
  • Ayrıcalıklı İsim (DN), tam konu kimliğini kapsar.
  • Verici, sertifikayı doğrulayan ve imzalayan kişiyi detaylandırır; CA için konu ile benzer alt alanlar içerir.
  • Geçerlilik Süresi, sertifikanın belirli bir tarihten önce veya sonra kullanılmadığını sağlamak için Not Before ve Not After zaman damgaları ile işaretlenir.
  • ık Anahtar bölümü, sertifikanın güvenliği için kritik olup, açık anahtarın algoritmasını, boyutunu ve diğer teknik detaylarını belirtir.
  • x509v3 uzantıları, sertifikanın işlevselliğini artırır; Anahtar Kullanımı, Genişletilmiş Anahtar Kullanımı, Konu Alternatif Adı ve sertifikanın uygulamasını ince ayar yapmak için diğer özellikleri belirtir.

Anahtar Kullanımı ve Uzantılar

  • Anahtar Kullanımı, açık anahtarın kriptografik uygulamalarını tanımlar; örneğin dijital imza veya anahtar şifreleme.
  • Genişletilmiş Anahtar Kullanımı, sertifikanın kullanım durumlarını daha da daraltır; örneğin, TLS sunucu kimlik doğrulaması için.
  • Konu Alternatif Adı ve Temel Kısıtlama, sertifika tarafından kapsanan ek ana bilgisayar adlarını ve bunun bir CA veya son varlık sertifikası olup olmadığını tanımlar.
  • Konu Anahtar Tanımlayıcı ve Otorite Anahtar Tanımlayıcı gibi tanımlayıcılar, anahtarların benzersizliğini ve izlenebilirliğini sağlar.
  • Otorite Bilgi Erişimi ve CRL Dağıtım Noktaları, verici CA'yı doğrulamak ve sertifika iptal durumunu kontrol etmek için yollar sağlar.
  • CT Ön Sertifika SCT'leri, sertifikaya kamu güveni için kritik olan şeffaflık günlükleri sunar.
# 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}")

OCSP ve CRL Dağıtım Noktaları Arasındaki Fark

OCSP (RFC 2560), bir istemci ve bir yanıtlayıcının, tam CRL indirmeye gerek kalmadan dijital kamu anahtar sertifikasının iptal edilip edilmediğini kontrol etmek için birlikte çalışmasını içerir. Bu yöntem, iptal edilen sertifika seri numaralarının bir listesini sağlayan ve potansiyel olarak büyük bir dosyanın indirilmesini gerektiren geleneksel CRL'den daha verimlidir. CRL'ler en fazla 512 giriş içerebilir. Daha fazla ayrıntı burada mevcuttur.

Sertifika Şeffaflığı Nedir

Sertifika Şeffaflığı, SSL sertifikalarının verilmesi ve varlığının alan adı sahipleri, CA'lar ve kullanıcılar tarafından görünür olmasını sağlayarak sertifika ile ilgili tehditlerle mücadele etmeye yardımcı olur. Hedefleri şunlardır:

  • CA'ların, alan adı sahibinin bilgisi olmadan bir alan için SSL sertifikası vermesini engellemek.
  • Yanlış veya kötü niyetle verilmiş sertifikaların izlenmesi için açık bir denetim sistemi kurmak.
  • Kullanıcıları sahte sertifikalardan korumak.

Sertifika Kayıtları

Sertifika kayıtları, ağ hizmetleri tarafından tutulan, kamuya açık denetlenebilir, yalnızca ekleme yapılabilen sertifika kayıtlarıdır. Bu kayıtlar, denetim amaçları için kriptografik kanıtlar sağlar. Hem verme otoriteleri hem de kamu, bu kayıtlara sertifika gönderebilir veya doğrulama için sorgulayabilir. Kayıt sunucularının kesin sayısı sabit olmamakla birlikte, dünya genelinde binin altında olması beklenmektedir. Bu sunucular, CA'lar, ISP'ler veya herhangi bir ilgilenen kuruluş tarafından bağımsız olarak yönetilebilir.

Sorgu

Herhangi bir alan için Sertifika Şeffaflığı kayıtlarını keşfetmek için https://crt.sh/ adresini ziyaret edin.

Sertifikaları depolamak için farklı formatlar mevcuttur, her birinin kendi kullanım durumları ve uyumluluğu vardır. Bu özet, ana formatları kapsar ve bunlar arasında dönüştürme konusunda rehberlik sağlar.

Formatlar

PEM Formatı

  • Sertifikalar için en yaygın kullanılan formattır.
  • Sertifikalar ve özel anahtarlar için ayrı dosyalar gerektirir, Base64 ASCII ile kodlanmıştır.
  • Yaygın uzantılar: .cer, .crt, .pem, .key.
  • Öncelikle Apache ve benzeri sunucular tarafından kullanılır.

DER Formatı

  • Sertifikaların ikili formatıdır.
  • PEM dosyalarında bulunan "BEGIN/END CERTIFICATE" ifadelerini içermez.
  • Yaygın uzantılar: .cer, .der.
  • Genellikle Java platformları ile kullanılır.

P7B/PKCS#7 Formatı

  • Base64 ASCII formatında depolanır, uzantıları .p7b veya .p7c'dir.
  • Sadece sertifikaları ve zincir sertifikalarını içerir, özel anahtarı hariç tutar.
  • Microsoft Windows ve Java Tomcat tarafından desteklenir.

PFX/P12/PKCS#12 Formatı

  • Sunucu sertifikalarını, ara sertifikaları ve özel anahtarları tek bir dosyada kapsayan ikili bir formattır.
  • Uzantılar: .pfx, .p12.
  • Sertifika içe aktarma ve dışa aktarma için öncelikle Windows'ta kullanılır.

Format Dönüştürme

PEM dönüşümleri uyumluluk için gereklidir:

  • x509'dan PEM'e
openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem
  • PEM'den DER'e
openssl x509 -outform der -in certificatename.pem -out certificatename.der
  • DER'den PEM'e
openssl x509 -inform der -in certificatename.der -out certificatename.pem
  • PEM'den P7B'ye
openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b -certfile CACert.cer
  • PKCS7'den PEM'e
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem

PFX dönüşümleri, Windows'ta sertifikaları yönetmek için çok önemlidir:

  • PFX'ten PEM'e
openssl pkcs12 -in certificatename.pfx -out certificatename.pem
  • PFX'ten PKCS#8'e iki adım içerir:
  1. PFX'i PEM'e dönüştür
openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem
  1. PEM'i PKCS8'e Dönüştür
openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
  • P7B'den PFX'e geçmek için de iki komut gereklidir:
  1. P7B'yi CER'ye dönüştür
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
  1. CER ve Özel Anahtarı PFX'e Dönüştür
openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer


Dünyanın en gelişmiş topluluk araçlarıyla desteklenen iş akışlarını kolayca oluşturmak ve otomatikleştirmek için Trickest kullanın.
Bugün Erişim Alın:

{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=certificates" %}

{% hint style="success" %} AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin
{% endhint %}