12 KiB
Sertifikalar
Sıfırdan kahramana kadar AWS hackleme öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile
HackTricks'ı desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamını görmek istiyorsanız veya HackTricks'i PDF olarak indirmek istiyorsanız [ABONELİK PLANLARI]'na(https://github.com/sponsors/carlospolop) göz atın!
- Resmi PEASS & HackTricks ürünlerini edinin
- PEASS Ailesi'ni keşfedin, özel NFT'lerimiz koleksiyonumuz
- Katılın 💬 Discord grubuna veya telegram grubuna veya bizi Twitter 🐦 @hacktricks_live** takip edin.**
- Hacking püf noktalarınızı göndererek HackTricks](https://github.com/carlospolop/hacktricks) ve HackTricks Cloud github depolarına PR'lar göndererek paylaşın.
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_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
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 (CA'lar) tarafından genel anahtar altyapısı (PKI) kurulumunda verilir. Başka bir yöntem ise güven ağı yöntemidir, 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), Yer (L), Eyalet veya İl (ST, S veya P), Organizasyon (O) ve Organizasyon Birimi (OU) coğrafi ve organizasyonel detaylar sağlar.
- Distinguished Name (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, Önce Değil ve Sonra Değil zaman damgaları ile işaretlenir, sertifikanın belirli bir tarihten önce veya sonra kullanılmadığından emin olur.
- 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 alanları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 sertifikanın bir CA mı yoksa son kullanıcı sertifikası mı olduğunu belirler.
- 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, tam CRL'yi indirmeye gerek olmadan. Bu yöntem, potansiyel olarak büyük bir dosyayı indirmeyi gerektiren geleneksel CRL'den daha verimlidir. CRL'ler en fazla 512 giriş içerebilir. Daha fazla ayrıntı burada.
Sertifika Şeffaflığı Nedir
Sertifika Şeffaflığı, SSL sertifikalarının verilmesi ve varlığının alan sahipleri, CA'lar ve kullanıcılara görünür 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ı gönderebilir veya doğrulama için sorgulayabilir. Log sunucularının tam sayısı sabit değildir, küresel olarak binin altında olması beklenir. Bu sunucular, CA'lar, İSP'ler veya ilgili herhangi bir 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.
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şta Apache olmak üzere benzer 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ıyla 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'yi 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 to PKCS#8 iki adımdan oluşur:
- PFX'i PEM'e dönüştürün
openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem
- PEM formatındaki dosyayı PKCS8 formatına dönüştürün.
openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
- P7B'yi PFX'e dönüştürmek için iki komut gereklidir:
- P7B'yi CER'ye dönüştürün.
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
- 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ı oluşturun ve yönetin.
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Sıfırdan kahraman olacak şekilde AWS hackleme öğrenin htARTE (HackTricks AWS Red Team Expert)!
HackTricks'ı desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız veya HackTricks'i PDF olarak indirmek istiyorsanız ABONELİK PLANLARI'na göz atın!
- Resmi PEASS & HackTricks ürünlerini edinin
- The PEASS Family'yi keşfedin, özel NFT'lerimiz koleksiyonumuzu
- 💬 Discord grubuna veya telegram grubuna katılın veya bizi Twitter 🐦 @hacktricks_live'da takip edin.**
- Hacking püf noktalarınızı paylaşarak PR'lar göndererek HackTricks ve HackTricks Cloud github depolarına katkıda bulunun.