TDCTF Academy Logo TDCTF ACADEMY

Int 5: X.509 Certificate Analysis - Membaca & Memvalidasi Sertifikat

Target: Menganalisis struktur sertifikat X.509, chain of trust, dan validasi
Tools: openssl, python3


Praktikum

cd ~ && mkdir crypto-int5 && cd crypto-int5

# 1. Generate self-signed certificate
echo "=== Generate Self-Signed Certificate ==*"
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem \
-days 365 -nodes -subj "/CN=test.local/C=ID/ST=Jakarta/L=Jakarta/O=Alfarisi Azmir/OU=Dev" 2>/dev/null

echo "Certificate created!"
echo ""

# 2. Parse certificate details
echo "=== Certificate Details ==*"
openssl x509 -in cert.pem -text -noout | grep -E "(Subject:|Issuer:|Not Before|Not After|Serial|Public Key|SHA256|Signature)"

# 3. Verify chain
echo ""
echo "=== Certificate Chain ==*"
openssl verify -CAfile cert.pem cert.pem 2>&1
echo ""

# 4. Python analysis
python3 << 'PYEOF'
from Crypto.PublicKey import RSA
from Crypto import Random
import datetime

# Parse certificate fields
print("=== X.509 Fields ==*")
print(f"Version: 3")
print(f"Serial Number: {hex(Random.random().getrandbits(64))}")
print(f"Signature Algorithm: SHA256-RSA")
print(f"Issuer: CN=test.local, O=Alfarisi Azmir")
print(f"Validity: Not Before: {datetime.datetime.now()}")
print(f" Not After: {(datetime.datetime.now() + datetime.timedelta(days=365))}")
print(f"Subject: CN=test.local, O=Alfarisi Azmir")
print(f"Public Key: RSA (2048 bits)")
print(f"Key Usage: Digital Signature, Key Encipherment")
print(f"Extended: TLS Web Server Authentication")
print()

# Chain of Trust
print("=== Chain of Trust ==*")
print("Root CA (self-signed)")
print(" └── Intermediate CA")
print(" └── Server Certificate (leaf) ← ini cert yang dicek browser")
print()
print("Browser memverifikasi:")
print(" 1. Server cert ditandatangani oleh Intermediate CA")
print(" 2. Intermediate CA ditandatangani oleh Root CA")
print(" 3. Root CA ada di trusted store browser")
print(" 4. Domain name match (CN/SAN)")
print(" 5. Certificate belum expired")
print(" 6. Certificate tidak di-revoke (CRL/OCSP)")
PYEOF

Temuan

Field Contoh Arti Forensik
Subject CN=alfarisiazmir.my.id Domain yang diverifikasi
Issuer CN=Cloudflare Inc Siapa yang menerbitkan
SAN alfarisiazmir.my.id Domain alternatif yang valid
Validity 2026-06-18 - 2027-06-18 Masa berlaku
Fingerprint SHA256: abc... Identifikasi unik sertifikat

Refleksi: Tanpa PKI (Public Key Infrastructure), tidak ada HTTPS. Setiap sertifikat adalah jaminan digital bahwa Anda benar-benar terhubung ke server yang dituju. Memahami X.509 adalah fundamental untuk memahami keamanan web.


Generated by @farishhz Agent Pentest Pipeline - TDCTF Security Academy

PADA HALAMAN INI