hacktricks/crypto-and-stego/certificates.md

12 KiB
Raw Blame History

Sertifikalar

Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'ı desteklemenin diğer yolları:


Trickest kullanarak dünyanın en gelişmiş topluluk araçları tarafından 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 genel anahtar sertifikası, birinin genel anahtarı sahibi olduğunu kanıtlamak için kriptografi alanında kullanılan dijital bir kimliktir. Anahtarın ayrıntılarını, sahibin kimliğini (konuyu) ve güvenilir bir otoriteden (veren) dijital imzayı içerir. Yazılım, vereni güvenirse ve imza geçerliyse, anahtar sahibiyle güvenli iletişim mümkündür.

Sertifikalar genellikle sertifika otoriteleri (CAs) tarafından genel anahtar altyapısı (PKI) kurulumunda verilir. Başka bir yöntem ise güven ağı 'dır, burada kullanıcılar doğrudan birbirlerinin anahtarlarını doğrular. Sertifikalar için yaygın format X.509'dur ve RFC 5280'de belirtildiği gibi belirli ihtiyaçlara uygun olarak uyarlanabilir.

x509 Ortak Alanlar

x509 Sertifikalarındaki Ortak Alanlar

x509 sertifikalarında, sertifikanın geçerliliğini ve güvenliğini sağlamak için birkaç alan kritik roller oynar. İşte bu alanların ayrıntıları:

  • Sürüm Numarası, x509 formatının sürümünü belirtir.
  • Seri Numarası, sertifikayı benzersiz bir şekilde tanımlar, genellikle iptal takibi için bir Sertifika Otoritesi'nin (CA) sistemi içinde.
  • Konu alanı sertifikanın sahibini temsil eder, bu bir makine, bir birey veya bir kuruluş olabilir. Detaylı kimlik bilgilerini içerir:
  • Ortak Ad (CN): Sertifika tarafından kapsanan alanlar.
  • Ülke (C), Yerel (L), Eyalet veya İl (ST, S veya P), Kuruluş (O) ve Kuruluş Birimi (OU) coğrafi ve kurumsal ayrıntılar sağlar.
  • Ayrıcalıklı Ad (DN) tam konu kimliğini kapsar.
  • Veren, sertifikayı doğrulayan ve imzalayan kişiyi belirtir, CA için Konu ile benzer alt alanları içerir.
  • Geçerlilik Süresi, sertifikanın belirli bir tarihten önce veya sonra kullanılmadığından emin olmak için Not Önce ve Not Sonra zaman damgaları ile işaretlenir.
  • Sertifikanın güvenliği için kritik olan Genel Anahtar bölümü, genel 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ı ayarlamak için diğer özellikleri belirtir.

Anahtar Kullanımı ve Uzantılar

  • Anahtar Kullanımı, genel 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 sunucusu kimlik doğrulaması için.
  • Konu Alternatif Adı ve Temel Kısıtlama, sertifika tarafından kapsanan ek ana bilgisayar adlarını ve sertifikanın bir CA mı yoksa son varlık sertifikası mı olduğunu tanımlar.
  • Konu Anahtar Kimliği ve Yetki Anahtar Kimliği, anahtarların benzersizliğini ve izlenebilirliğini sağlar.
  • Yetki Bilgi Erişimi ve CRL Dağıtım Noktaları, sertifikayı veren CA'yı doğrulamak için yollar sağlar ve sertifika iptal durumunu kontrol etmek için yollar sağlar.
  • CT Ön Sertifika SCT'leri, sertifikaya olan kamu güveni için önemli olan şeffaflık günlüklerini 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 yanıtlayıcının birlikte çalışarak dijital genel anahtar sertifikasının iptal edilip edilmediğini kontrol etmesini sağlar ve tam CRL'yi indirmeye gerek kalmadan yapar. Bu yöntem, potansiyel olarak büyük bir dosya indirmeyi gerektiren geleneksel CRL'den daha verimlidir. CRL'ler en fazla 512 giriş içerebilir. Daha fazla detay burada bulunabilir.

Sertifika Şeffaflığı Nedir

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

  • CA'ların alan sahibinin bilgisi olmadan bir alan için SSL sertifikaları vermesini engellemek.
  • Yanlışlıkla veya kötü niyetle verilen sertifikaları izlemek için açık bir denetim sistemi oluşturmak.
  • Kullanıcıları sahte sertifikalara karşı korumak.

Sertifika Kayıtları

Sertifika kayıtları, ağ hizmetleri tarafından tutulan, herkese açık olarak denetlenebilir, yalnızca eklemeye izin veren sertifikaların kayıtlarıdır. Bu kayıtlar denetim amaçları için kriptografik kanıtlar sağlar. Hem verme yetkilileri hem de halk, bu kayıtlara sertifikaları sunabilir veya doğrulama için sorgulayabilir. Kayıt sunucularının kesin sayısı sabit değildir, küresel olarak binin altında olması beklenir. Bu sunucular, CA'lar, ISS'ler veya ilgili herhangi bir varlık 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.

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.
  • Başlıca olarak Apache ve benzeri sunucular tarafından kullanılır.

DER Formatı

  • Sertifikaların ikili bir 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 ile depolanır, .p7b veya .p7c uzantılarına sahiptir.
  • Yalnızca 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.
  • Genellikle Windows'ta sertifika içe ve dışa aktarma işlemleri için kullanılır.

Format Dönüşümleri

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

  • x509'tan PEM'e
openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem
  • PEM'i DER'e dönüştürme
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'i PEM'e dönüştürme
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem

PFX dönüşümleri, Windows üzerinde sertifikaları yönetmek için hayati öneme sahiptir:

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


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

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

Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'ı desteklemenin diğer yolları: