Skip to content

Instantly share code, notes, and snippets.

@fixploit03
Last active December 17, 2025 02:59
Show Gist options
  • Select an option

  • Save fixploit03/672e2788793088c9cb0d763241fa5ab7 to your computer and use it in GitHub Desktop.

Select an option

Save fixploit03/672e2788793088c9cb0d763241fa5ab7 to your computer and use it in GitHub Desktop.
Cara Bikin Sertifikat X.509 (CA-Signed)

Cara Membuat Sertifikat X.509 (CA-Signed)

1. Membuat Sertifikat Root CA

Tip

Tambahkan parameter -aes256 untuk mengenkripsi private key Root CA. Langkah ini sangat penting untuk mencegah akses tidak sah jika file kunci tersebut jatuh ke tangan orang lain.

Warning

Jika lupa password Root CA, Anda tidak akan bisa lagi menandatangani (menerbitkan) sertifikat baru untuk server maupun client. Satu-satunya solusi adalah membuat Root CA dari awal.

  1. Buat private key untuk Root CA:

    openssl genrsa -out ca.key 4096
    
  2. Buat sertifikat Root CA (Self-Signed):

    openssl req -new -x509 -days 3650 -key ca.key -out ca.pem
    
  3. Isi data:

    • Country Name: ID
    • State or Province Name: Nama Provinsi
    • Locality Name: Nama Kota
    • Organization Name: Nama Organisasi
    • Organizational Unit Name: Nama Unit Organisasi
    • Common Name: Example Root Certificate Authority
    • Email Address: Alamat E-mail Root CA

2. Membuat Sertifikat Server

  1. Buat private key untuk server:

    openssl genrsa -out server.key 2048
    
  2. Buat CSR (Certificate Signing Request) untuk server:

    openssl req -new -key server.key -out server.csr
    

    Isi data:

    • Country Name: ID
    • State or Province Name: Nama Provinsi
    • Locality Name: Nama Kota
    • Organization Name: Nama Organisasi
    • Organizational Unit Name: Nama Unit Organisasi
    • Common Name: domain/hostname server RADIUS
    • Email Address: Alamat E-mail Server

    Pada saat prompt ini:

    A challenge password []:
    An optional company name []:
    

    Tekan Enter untuk mengosongkan (kedua bagian ini bersifat opsional dan tidak wajib diisi untuk keperluan sertifikat RADIUS).

  3. Buat file ekstensi sertifikat untuk server:

    nano server.ext
    

    Isi dengan:

    basicConstraints = CA:FALSE
    keyUsage = digitalSignature, keyEncipherment
    extendedKeyUsage = serverAuth
    subjectAltName = DNS:[domain/hostname],IP:[ip]
    

    Ganti:

    • [domain/hostname]: domain atau hostname yang ada di server RADIUS
    • [ip]: ip address yang ada di server RADIUS
  4. Tandatangani CSR server oleh Root CA:

    openssl x509 -req -in server.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out server.pem -days 365 -extfile server.ext
    

3. Membuat Sertifikat Client

Note

Jika memiliki banyak client, ulangi langkah-langkah pembuatan sertifikat ini untuk setiap client secara individual agar setiap client memiliki identitasnya masing-masing.

  1. Buat private key untuk client:

    openssl genrsa -out client.key 2048
    
  2. Buat CSR (Certificate Signing Request) untuk client:

    openssl req -new -key client.key -out client.csr
    

    Isi data:

    • Country Name: ID
    • State or Province Name: Nama Provinsi
    • Locality Name: Nama Kota
    • Organization Name: Nama Organisasi
    • Organizational Unit Name: Nama Unit Organisasi
    • Common Name: username/identitas client
    • Email Address: Alamat E-mail Client

    Pada saat prompt ini:

    A challenge password []:
    An optional company name []:
    

    Tekan Enter untuk mengosongkan (kedua bagian ini bersifat opsional dan tidak wajib diisi untuk keperluan sertifikat RADIUS).

  3. Buat file ekstensi sertifikat untuk client:

    nano client.ext
    

    Isi dengan:

    basicConstraints = CA:FALSE
    keyUsage = digitalSignature, keyEncipherment
    extendedKeyUsage = clientAuth
    
  4. Tandatangani CSR client oleh Root CA:

    openssl x509 -req -in client.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out client.pem -days 365 -extfile client.ext
    

4. Opsional (Tapi Rekomendasi) Untuk EAP-TLS

Buat format PKCS#12 untuk client (Windows/macOS/iOS/Android):

openssl pkcs12 -export -out client.p12 -inkey client.key -in client.pem -certfile ca.pem -name "Sertifikat Client"

5. Verifikasi Sertifikat

  1. Cek sertifikat Root CA:

    openssl x509 -in ca.pem -text -noout
    
  2. Cek sertifikat server:

    openssl x509 -in server.pem -text -noout
    openssl verify -CAfile ca.pem server.pem
    
  3. Cek sertifikat client:

    openssl x509 -in client.pem -text -noout
    openssl verify -CAfile ca.pem client.pem
    

6. Setup File Permissions

chmod 600 *.key
chmod 644 *.pem

Keterangan:

  • 600: Hanya owner yang bisa read/write file
  • 644: Owner bisa read/write file, others hanya read file

Semoga bermanfaat ^_^

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment