Certificates
Reading time: 8 minutes
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
What is a Certificate
A public key certificate ni kitambulisho cha kidijitali kinachotumika katika cryptography kuthibitisha kwamba mtu anamiliki funguo ya umma. Inajumuisha maelezo ya funguo, utambulisho wa mmiliki (mhusika), na saini ya kidijitali kutoka kwa mamlaka inayotegemewa (mtoaji). Ikiwa programu inategemea mtoaji na saini ni halali, mawasiliano salama na mmiliki wa funguo yanawezekana.
Vyeti kwa kawaida vinatolewa na certificate authorities (CAs) katika muundo wa public-key infrastructure (PKI). Njia nyingine ni web of trust, ambapo watumiaji wanathibitisha funguo za kila mmoja moja kwa moja. Muundo wa kawaida wa vyeti ni X.509, ambayo inaweza kubadilishwa kwa mahitaji maalum kama ilivyoelezwa katika RFC 5280.
x509 Common Fields
Common Fields in x509 Certificates
Katika vyeti vya x509, sehemu kadhaa fields zina jukumu muhimu katika kuhakikisha halali na usalama wa cheti. Hapa kuna muhtasari wa sehemu hizi:
- Version Number inaashiria toleo la muundo wa x509.
- Serial Number inatambulisha kipekee cheti ndani ya mfumo wa Mamlaka ya Cheti (CA), hasa kwa ajili ya kufuatilia kufutwa.
- Sehemu ya Subject inawakilisha mmiliki wa cheti, ambaye anaweza kuwa mashine, mtu binafsi, au shirika. Inajumuisha utambulisho wa kina kama:
- Common Name (CN): Majina ya maeneo yanayofunikwa na cheti.
- Country (C), Locality (L), State or Province (ST, S, or P), Organization (O), na Organizational Unit (OU) zinatoa maelezo ya kijiografia na ya shirika.
- Distinguished Name (DN) inajumuisha utambulisho kamili wa mhusika.
- Issuer inaelezea nani alithibitisha na kusaini cheti, ikiwa ni pamoja na sehemu zinazofanana kama za Mhusika kwa CA.
- Validity Period inaashiriwa na alama za Not Before na Not After, kuhakikisha cheti hakitumiki kabla au baada ya tarehe fulani.
- Sehemu ya Public Key, muhimu kwa usalama wa cheti, inaelezea algorithimu, ukubwa, na maelezo mengine ya kiufundi ya funguo ya umma.
- x509v3 extensions zinaboresha kazi ya cheti, zikielezea Key Usage, Extended Key Usage, Subject Alternative Name, na mali nyingine za kuboresha matumizi ya cheti.
Key Usage and Extensions
- Key Usage inatambulisha matumizi ya cryptographic ya funguo ya umma, kama saini ya kidijitali au ufichaji funguo.
- Extended Key Usage inapanua zaidi matumizi ya cheti, kwa mfano, kwa uthibitisho wa seva ya TLS.
- Subject Alternative Name na Basic Constraint zinaelezea majina mengine ya mwenyeji yanayofunikwa na cheti na ikiwa ni cheti cha CA au cheti cha mwisho, mtawalia.
- Vitambulisho kama Subject Key Identifier na Authority Key Identifier vinahakikisha upekee na ufuatiliaji wa funguo.
- Authority Information Access na CRL Distribution Points zinatoa njia za kuthibitisha CA inayotoa na kuangalia hali ya kufutwa kwa cheti.
- CT Precertificate SCTs zinatoa kumbukumbu za uwazi, muhimu kwa imani ya umma katika cheti.
# 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}")
Tofauti kati ya OCSP na CRL Distribution Points
OCSP (RFC 2560) inahusisha mteja na jibu wakifanya kazi pamoja kuangalia kama cheti cha umma wa dijiti kimeondolewa, bila kuhitaji kupakua CRL kamili. Njia hii ni bora zaidi kuliko CRL ya jadi, ambayo inatoa orodha ya nambari za serial za vyeti vilivyondolewa lakini inahitaji kupakua faili kubwa. CRLs zinaweza kujumuisha hadi ingizo 512. Maelezo zaidi yanapatikana here.
Nini maana ya Uwazi wa Cheti
Uwazi wa Cheti husaidia kupambana na vitisho vinavyohusiana na vyeti kwa kuhakikisha utoaji na uwepo wa vyeti vya SSL unaonekana kwa wamiliki wa domain, CAs, na watumiaji. Malengo yake ni:
- Kuzuia CAs kutoa vyeti vya SSL kwa domain bila maarifa ya mmiliki wa domain.
- Kuanzisha mfumo wa ukaguzi wazi wa kufuatilia vyeti vilivyotolewa kwa makosa au kwa uovu.
- Kulinda watumiaji dhidi ya vyeti vya udanganyifu.
Makaratasi ya Cheti
Makaratasi ya cheti ni rekodi za vyeti zinazoweza kukaguliwa hadharani, zinazoongezwa tu, zinazoshughulikiwa na huduma za mtandao. Makaratasi haya yanatoa uthibitisho wa kijasusi kwa ajili ya ukaguzi. Mamlaka za utoaji na umma wanaweza kuwasilisha vyeti kwenye makaratasahaya au kuyatafuta kwa ajili ya uthibitisho. Ingawa idadi halisi ya seva za log haijafanywa kuwa thabiti, inatarajiwa kuwa chini ya elfu moja duniani kote. Seva hizi zinaweza kusimamiwa kwa uhuru na CAs, ISPs, au shirika lolote linalovutiwa.
Utafutaji
Ili kuchunguza makaratasahaya ya Uwazi wa Cheti kwa domain yoyote, tembelea https://crt.sh/.
Mifumo tofauti inapatikana kwa ajili ya kuhifadhi vyeti, kila moja ikiwa na matumizi yake na ulinganifu. Muhtasari huu unashughulikia mifumo kuu na kutoa mwongozo juu ya kubadilisha kati yao.
Mifumo
PEM Format
- Mfumo unaotumika zaidi kwa vyeti.
- Unahitaji faili tofauti kwa vyeti na funguo za faragha, zilizowekwa katika Base64 ASCII.
- Upanuzi wa kawaida: .cer, .crt, .pem, .key.
- Kimsingi hutumiwa na Apache na seva zinazofanana.
DER Format
- Mfumo wa binary wa vyeti.
- Huna taarifa za "BEGIN/END CERTIFICATE" zinazopatikana katika faili za PEM.
- Upanuzi wa kawaida: .cer, .der.
- Mara nyingi hutumiwa na majukwaa ya Java.
P7B/PKCS#7 Format
- Huhifadhiwa katika Base64 ASCII, ikiwa na upanuzi .p7b au .p7c.
- Inajumuisha vyeti tu na vyeti vya mnyororo, ikiondoa funguo ya faragha.
- Inasaidiwa na Microsoft Windows na Java Tomcat.
PFX/P12/PKCS#12 Format
- Mfumo wa binary unaojumuisha vyeti vya seva, vyeti vya kati, na funguo za faragha katika faili moja.
- Upanuzi: .pfx, .p12.
- Kimsingi hutumiwa kwenye Windows kwa ajili ya kuagiza na kuuza vyeti.
Kubadilisha Mifumo
Mabadiliko ya PEM ni muhimu kwa ajili ya ulinganifu:
- x509 to PEM
openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem
- PEM hadi DER
openssl x509 -outform der -in certificatename.pem -out certificatename.der
- DER hadi PEM
openssl x509 -inform der -in certificatename.der -out certificatename.pem
- PEM hadi P7B
openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b -certfile CACert.cer
- PKCS7 hadi PEM
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem
PFX conversions ni muhimu kwa usimamizi wa vyeti kwenye Windows:
- PFX to PEM
openssl pkcs12 -in certificatename.pfx -out certificatename.pem
- PFX hadi PKCS#8 inahusisha hatua mbili:
- Geuza PFX kuwa PEM
openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem
- Geuza PEM kuwa PKCS8
openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
- P7B to PFX pia inahitaji amri mbili:
- Geuza P7B kuwa CER
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
- Geuza CER na Funguo Binafsi kuwa PFX
openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer
- ASN.1 (DER/PEM) editing (inafanya kazi na vyeti au karibu muundo wowote wa ASN.1):
- Clone asn1template
git clone https://github.com/wllm-rbnt/asn1template.git
- Geuza DER/PEM kuwa muundo wa uzalishaji wa OpenSSL
asn1template/asn1template.pl certificatename.der > certificatename.tpl
asn1template/asn1template.pl -p certificatename.pem > certificatename.tpl
- Hariri certificatename.tpl kulingana na mahitaji yako
vim certificatename.tpl
- Jenga upya cheti kilichobadilishwa
openssl asn1parse -genconf certificatename.tpl -out certificatename_new.der
openssl asn1parse -genconf certificatename.tpl -outform PEM -out certificatename_new.pem
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.