Sabtu, 10 Juni 2017

Membuat Self-Signed CA SSL dengan OpenSSL



Pengertian

Root (Certificate Authority) -> 2. Intermediate (Certificate Issuer) -> 3. End User Certificate.

Sedangkan Self-Signed Certificate umumnya hanya memiliki yang ketiga. Tidak mempunyai Root dan Intermediate Authority.

Jadi apakah kita bisa membuat sendiri ketiga komponen tersebut?
Bisa, dengan OpenSSL kita bisa membuat sendiri ketiga komponen diatas. Jadi intinya dengan OpenSSL kita

Latar belakang 

pada postingan saya yang lalu saya telah memposting Menerapkan SSL (HTTPS) untuk Login Hotspot MikroTik tapi pada postingan itu saya belum menjelaskan bagaimana mambuat Certificate SSLnya.dan pada kesempatan ini saya akan membahasnya

Alat dan bahan

1.OS Debian server
2.OpenSSL (di Debian dan turunannya dapat diinstall dengan apt-get install
   openssl)
3.Web server

Tahap pelaksanaan

Buat Direktori untuk Sertifikat kita nantinya di /root/ca. Juga buat struktur direktorinya

root@maulana:~# mkdir ca && cd ca
root@maulana:~/ca# mkdir certs crl newcerts private
root@maulana:~/ca# chmod 700 private
root@maulana:~/ca# touch index.txt && echo 1000 > serial
root@maulana:~/ca#  mkdir intermediate && cd intermediate
root@maulana:~/ca/intermediate# mkdir certs crl csr newcerts private && chmod 700 private
root@maulana:~/ca/intermediate# touch index.txt && echo 1000 > serial
root@maulana:~/ca# echo 1000 > intermediate/crlnumber

Selanjutnya saya akan buat OpenSSL yang akan kita gunakan untuk Root CA nantinya

root@maulana:~/ca# nano openssl.cnf

untuk isinya masukkan perintah Berikut ini 

Buat Root KeyRoot Key akan digunakan untuk membuat Sertifikat Root (CA)

 root@maulana:~/ca# openssl genrsa -aes256 -out private/ca.key.pem 4096
root@maulana:~/ca# chmod 400 private/ca.key.pem

Buat Sertifikat Root (CA)
Disinilah Root Key akan digunakan. Yaitu untuk membuat Sertifikat Root, mengapa keamanan file ini penting? karena siapapun yang memiliki akses Root Key maka dia dapat menerbitkan sertifikat sendiri. Juga pastikan untuk memilih durasi Sertifikat Root yang agak lama untuk kadaluarsa.Karena jika Durasi Sertifikat Root Habis maka Sertifikat dibawahnya juga ikut kadaluarsa.


root@maulana:~/ca# openssl req -config openssl.cnf -key private/ca.key.pem -new -x509 -days 5760 -sha256 -extensions v3_ca -out certs/ca.cert.pem
root@maulana:~/ca# chmod 444 certs/ca.cert.pem
Untuk melihat hasil Pembuatan Sertifikat Root

root@maulana:~/ca# openssl x509 -noout -text -in certs/ca.cert.pem
Sekarang kita buat OpenSSL untuk Intermediate CA

root@maulana:~/ca/intermediate# nano openssl.cnf

untuk isinya masukkan perintah Berikut ini

Tambahkan File crlnumber di direktori Intermediate CA untuk mengikuti daftar Certificate Revocation Lists

root@maulana:~/ca/intermediate# echo 1000 > crlnumber
Buat Intermediate Key
Intermediate Key akan digunakan untuk membuat sertifikat Intermediate CA

root@maulana:~/ca#  openssl genrsa -aes256 -out intermediate/private/intermediate.key.pem 4096
root@maulana:~/ca# chmod 400 intermediate/private/intermediate.key.pem
 Buat Sertifikat CSR (Certificate Signing Request) untuk Intermediate CA
Disini Intermediate Key akan digunakan untuk men-generate atau membuat Sertifikat CSR untuk Intermediate CA.

root@maulana:~/ca# openssl req -config intermediate/openssl.cnf -new -sha256 -key intermediate/private/intermediate.key.pem -out intermediate/csr/intermediate.csr.pem

Buat Sertifikat Intermediate
Setelah CSR untuk Intermediate dibuat, selanjutnya adalah digunakan bersama dengan Root CA untuk membuat Sertifikat Intermediate. Untuk catatan, Durasi dari Sertifikat Intermediate haruslah tidak lebih panjang dari Durasi dari Sertifikat Root.
root@maulana:~/ca#  openssl ca -config openssl.cnf -extensions v3_intermediate_ca -days 5400 -notext -md sha256 -in intermediate/csr/intermediate.csr.pem -out intermediate/certs/intermediate.cert.pem
root@maulana:~/ca# chmod 444 intermediate/certs/intermediate.cert.pem
Verifikasi Hasil dari Pembuatan Sertifikat Intermediate
root@maulana:~/ca# openssl verify -CAfile certs/ca.cert.pem intermediate/certs/intermediate.cert.pem
Bila hasil benar maka akan keluar: intermediate.cert.pem: OK

  
Sekarang kita buat Certificate Key untuk End User
root@maulana:~/ca# openssl genrsa -aes256 -out intermediate/private/maulana.id.key.pem 2048
root@maulana:~/ca# chmod 400 intermediate/private/maulana.id.key.pem
Selanjutnya buat CSR (Certificate Signing Request) untuk End User

root@maulana:~/ca# openssl req -config intermediate/openssl.cnf -key intermediate/private/maulana.id.key.pem -new -sha256 -out intermediate/csr/maulana.id.csr.pem

Selanjutnya buat Sertifikat End User dengan Certificate Key dan CSR End User

root@maulana:~/ca# openssl ca -config intermediate/openssl.cnf -extensions server_cert -days 5400 -notext -md sha256 -in intermediate/csr/maulana.id.csr.pem -out  
intermediate/certs/maulana.id.cert.pem

root@maulana:~/ca# chmod 444 intermediate/certs/maulana.id.cert.pem

Sekarang buat File Certificate Chain

root@maulana:~/ca# cat intermediate/certs/intermediate.cert.pem certs/ca.cert.pem > intermediate/certs/ca-chain.cert.pem
root@maulana:~/ca# chmod 444 intermediate/certs/ca-chain.cert.pem
Untuk verifikasi
root@maulana:~/ca# openssl verify -CAfile intermediate/certs/ca-chain.cert.pem intermediate/certs/maulana.id.cert.pem
Bila hasil benar maka akan keluar: maulana.id.cert.pem: OK
 
Kalian bisa melihat file Certificate di directory

maulana.id.key.pem (SSL Private Key) (Lokasi: intermediate/private) 
maulana.id.cert.pem (SSL Certificate) (Lokasi: intermediate/certs)
Referensi
Jamielinux (Sign Server and Client Certificate - OpenSSL Certificate Authority)
https://penguinstunnel.blogspot.co.id/2017/01/membuat-self-signed-ca-ssl-dengan.html
https://github.com/schrodervictor/simple-certificate-authority/blob/master/README.md

0 komentar:

Posting Komentar