Daftar Isi
- Kelebihan dan Kekurangan Dua Tanda Tangan Elektronik (TTE)
- TTE Berkas Elektronik dengan Sertifikat Digital (Self Signed) - SSL
- |-Membuat Root CA dan Sertifikat (Self Signed) - SSL
- |--Root CA
- |--Penjadwalan Generate CRL
- |--Membuat FDF - SSL
- |--Installer Root CA di Windows
- |--Sertifikat SSL
- |-Output - SSL
- TTD QR
- Buat QR Code (Client Side)
- Pemasangan Root CA (1 kali saja)
TTE Berkas Elektronik dengan Sertifikat Digital (Self Signed) – SSL
Implementasi dari https://pdsi.unisayogya.ac.id/mengaktifkan-ssl-https-pada-web-berbasis-apache-dan-open-ssl/#sslbuatsendiri
Ilustrasi dapat dibaca di https://pdsi.unisayogya.ac.id/certificate-authority-digital-signature-dan-certificate-revocation-list-crl
|-Membuat Root CA dan Sertifikat (Self Signed) – SSL
Root CA, FDF dan Installer Root CA cukup sekali dibuat.
|–Root CA
Persiapan (Harap diganti sesuai dengan institusi masing-masing). Login sebagai root.
#pastikan login sebagai root
#ada spasi sebelum perintah artinya perintah tidak di log di history, sehingga tidak muncul ketika ditekan panah ke atas dan panah ke bawah
NAMA_="Mandiri"
#tulis 50 karakter password, gunakan https://www.avast.com/random-password-generator
PASS50_="b_qIe[^f@d+^JtCFJ'ty=l+iH0LRO6X~THoot4rtm3eP=MLdTE"
Step 1
cd ~
mkdir root-ssl
cd root-ssl
echo $PASS50_ > password.info
echo "1000" > rootCA$NAMA_.srl
openssl genrsa -des3 -passout pass:$(cat password.info) -out rootCA$NAMA_.key 4096
openssl req -x509 -new -nodes -passin pass:$(cat password.info) -key rootCA$NAMA_.key -sha256 -days 18250 -out rootCA$NAMA_.pem
Step 2
ALAMATWEBCRL_="https://example.org/"
FILECRL_=rootCA$NAMA_".crl.pem"
echo "[default]" > rootCA$NAMA_.cnf
echo "crl_url = "$ALAMATWEBCRL_$FILECRL_ >> rootCA$NAMA_.cnf
echo "default_ca = ca_default" >> rootCA$NAMA_.cnf
echo "name_opt = utf8,esc_ctrl,multiline,lname,align" >> rootCA$NAMA_.cnf
echo "[ ca_default ]" >> rootCA$NAMA_.cnf
echo "dir = /root/root-ssl # Where everything is kept" >> rootCA$NAMA_.cnf
echo "crl_dir = \$dir/crl # Where the issued crl are kept" >> rootCA$NAMA_.cnf
echo "database = \$dir/index.txt # database index file." >> rootCA$NAMA_.cnf
echo "serial = \$dir/"rootCA$NAMA_".srl # The current serial number" >> rootCA$NAMA_.cnf
echo "crlnumber = \$dir/crlnumber # the current crl number" >> rootCA$NAMA_.cnf
echo "crl = \$dir/"$FILECRL_" # The current CRL" >> rootCA$NAMA_.cnf
echo "new_certs_dir = /root/digisign-ssl # default place for new certs" >> rootCA$NAMA_.cnf
echo "#CA" >> rootCA$NAMA_.cnf
echo "certificate = \$dir/"rootCA$NAMA_".pem" >> rootCA$NAMA_.cnf
echo "private_key = \$dir/"rootCA$NAMA_".key" >> rootCA$NAMA_.cnf
echo "x509_extensions = v3_ca # The extensions to add to the cert" >> rootCA$NAMA_.cnf
echo "# crlnumber must also be commented out to leave a V1 CRL." >> rootCA$NAMA_.cnf
echo "crl_extensions = crl_ext" >> rootCA$NAMA_.cnf
echo "default_crl_days= 31 # how long before next CRL" >> rootCA$NAMA_.cnf
echo "default_md = sha256 # use SHA-256 by default" >> rootCA$NAMA_.cnf
echo "preserve = no # keep passed DN ordering" >> rootCA$NAMA_.cnf
echo "policy = policy_c_o_match" >> rootCA$NAMA_.cnf
echo "[policy_c_o_match]" >> rootCA$NAMA_.cnf
echo "countryName = optional" >> rootCA$NAMA_.cnf
echo "stateOrProvinceName = optional" >> rootCA$NAMA_.cnf
echo "organizationName = optional" >> rootCA$NAMA_.cnf
echo "organizationalUnitName = optional" >> rootCA$NAMA_.cnf
echo "commonName = optional" >> rootCA$NAMA_.cnf
echo "emailAddress = optional" >> rootCA$NAMA_.cnf
echo "[ crl_ext ]" >> rootCA$NAMA_.cnf
echo "# CRL extensions." >> rootCA$NAMA_.cnf
echo "# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL." >> rootCA$NAMA_.cnf
echo "authorityKeyIdentifier=keyid:always" >> rootCA$NAMA_.cnf
echo "[ v3_ca ]" >> rootCA$NAMA_.cnf
echo "# Extensions for a typical CA" >> rootCA$NAMA_.cnf
echo "# PKIX recommendation." >> rootCA$NAMA_.cnf
echo "authorityKeyIdentifier=keyid,issuer" >> rootCA$NAMA_.cnf
echo "basicConstraints=CA:FALSE" >> rootCA$NAMA_.cnf
echo "keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment" >> rootCA$NAMA_.cnf
echo "crlDistributionPoints = URI:"$ALAMATWEBCRL_$FILECRL_ >> rootCA$NAMA_.cnf
mv ~/root-ssl/index.txt ~/root-ssl/index.old.txt
touch ~/root-ssl/index.txt
echo 1000 > crlnumber
cp rootCA$NAMA_.pem rootCA$NAMA_.cer
chmod 0400 rootCA$NAMA_*
chmod 0444 *.cer
chown root:root rootCA$NAMA_*
|–Penjadwalan Generate CRL
#jalankan perintah di bawah ini sebagai root untuk meng-generate crl, dan salin hasilnya
echo "openssl ca -config /root/root-ssl/rootCA$NAMA_.cnf -gencrl -passin pass:\$(cat /root/root-ssl/password.info) -out /root/root-ssl/rootCA$NAMA_.crl.pem"
#crontab -e sebagai root
0 0 1 * * <perintah generate crl> && <perintah untuk mengunggah *.crl.pem ke server>
|–Membuat FDF – SSL
Buka Adobe Reader
- Membuka pengaturan
- Buka menu edit, pilih preferences
- Pada jendela preferences, pilih kategori signatures
- Pada bagian identities & trusted certificates, klik tombol more
- Impor sertifikat terpercaya
- Pilih trusted certificates
- Klik tombol import
- Memilih sertifikat
- Klik tombol browse
- Pilih Root CA yang akan dipercaya, misalnya rootCAMandiri.cer
- Klik tombol open
- Masih pada jendela yang sama, atur impor
- Pilih salah satu kontak pada contacts
- Pilih salah satu sertifikat pada certificates
- Klik tombol trust
- Centang semua pada bagian trust
- Klik tombol ok
- Klik tombol import
- Ekspor sertifikat
- Pilih sertifikat yang baru saja diimpor
- Klik tombol export
- Jenis ekspor
- Pilih save the exported data to file Acrobat FDF Data Exchange
- Kemudian ikuti langkah selanjutnya sampai selesai, tidak perlu melakukan Digital Sign






|–Installer Root CA di Windows
ALAMATROOTCA_="https://example.org/rootCA.cer"
ALAMATFDF_="https://example.org/rootCA.fdf"
echo "@rem nama berkas: rootCA"$NAMA_"Installer.bat" > rootCA$NAMA_'Installer.bat'
echo "@rem unduh Root CA (alamat: "$ALAMATROOTCA_")" >> rootCA$NAMA_'Installer.bat'
echo "@rem alternatif perintah, tetapi untuk alasan backward compatibility tidak digunakan: powershell Invoke-WebRequest -Uri \""$ALAMATROOTCA_"\" -OutFile %homepath%\Downloads\rootCA"$NAMA_".cer" >> rootCA$NAMA_'Installer.bat'
echo "powershell -command \"(New-Object Net.WebClient).DownloadFile('"$ALAMATROOTCA_"', '%homepath%\Downloads\rootCA"$NAMA_".cer')\"" >> rootCA$NAMA_'Installer.bat'
echo "@rem pasang Root CA ke sistem" >> rootCA$NAMA_'Installer.bat'
echo "powershell certutil.exe -addstore root %homepath%\Downloads\rootCA"$NAMA_".cer" >> rootCA$NAMA_'Installer.bat'
echo "@rem aktifkan ImportEnterpriseRoots firefox" >> rootCA$NAMA_'Installer.bat'
echo "powershell NEW-Item -Path \"HKLM:\Software\Policies\Mozilla\Firefox\Certificates\" -Force" >> rootCA$NAMA_'Installer.bat'
echo "powershell New-ItemProperty -Path \"HKLM:\Software\Policies\Mozilla\Firefox\Certificates\" -Name \"ImportEnterpriseRoots\" -Value 1 -PropertyType DWORD -Force" >> rootCA$NAMA_'Installer.bat'
echo "@rem unduh FDF" >> rootCA$NAMA_'Installer.bat'
echo "@rem alternatif perintah, tetapi untuk alasan backward compatibility tidak digunakan: powershell Invoke-WebRequest -Uri \""$ALAMATFDF_"\" -OutFile %homepath%\Downloads\CertExchange"$NAMA_".fdf" >> rootCA$NAMA_'Installer.bat'
echo "powershell -command \"(New-Object Net.WebClient).DownloadFile('"$ALAMATFDF_"', '%homepath%\Downloads\CertExchange"$NAMA_".fdf')\"" >> rootCA$NAMA_'Installer.bat'
echo "pause" >> rootCA$NAMA_'Installer.bat'
|–Sertifikat SSL
Langkah ini dapat dilakukan berkali-kali, ganti PASS70_ dan NAMASUB_ untuk setiap sertifikat baru
#tulis kembali nama root CA
NAMA_="Mandiri"
#tulis 70 karakter password, gunakan https://www.avast.com/random-password-generator
PASS70_="%c$s71vDD3K@H+b]yW[a&i5GW%)t5d@#aMDIL0bORd]OcTq=hXmvuG9.mrzL(7D#5UzWO@"
NAMASUB_="SubMandiri"
Step 3
mkdir ~/digisign-ssl
cd ~/digisign-ssl
echo $PASS70_ > $NAMASUB_'password-pfx.info'
echo -e "\n\n================\nGunakan password $(head -c 20 $NAMASUB_'password-pfx.info') pada Challenge Password\n\n================\n\n"
openssl req -new -nodes -out $NAMASUB_'CSRfile.csr' -newkey rsa:4096 -keyout $NAMASUB_'private.key' -config ../root-ssl/rootCA$NAMA_.cnf
Step 4
openssl ca -config ../root-ssl/rootCA$NAMA_.cnf -in $NAMASUB_'CSRfile.csr' -out $NAMASUB_'DigiSign.crt' -passin pass:$(cat ../root-ssl/password.info) -days 18250
Step 5
openssl verify -CAfile ../root-ssl/rootCA$NAMA_.pem $NAMASUB_'DigiSign.crt'
openssl ca -config ../root-ssl/rootCA$NAMA_.cnf -gencrl -passin pass:$(cat ../root-ssl/password.info) -out ../root-ssl/rootCA$NAMA_'.crl.pem'
cp ../root-ssl/rootCA$NAMA_.srl $NAMASUB_'CSRfile.srl'
echo "Salin ../root-ssl/"rootCA$NAMA_".crl.pem ke web CRL untuk memperbaharui info CRL"
Step 6
openssl pkcs12 -export -passout pass:$(tail -c 50 $NAMASUB_'password-pfx.info') -out $NAMASUB_'DigiSign.pfx' -passin pass:$(head -c 20 $NAMASUB_'password-pfx.info') -inkey $NAMASUB_'private.key' -in $NAMASUB_'DigiSign.crt'
echo "Gunakan password $(tail -c 50 $NAMASUB_'password-pfx.info') setiap membuat tanda tangan digital file menggunakan $NAMASUB_'DigiSign.pfx'"
chmod 0400 $NAMASUB_*
chown root:root $NAMASUB_*
PASS50_=""
PASS70_=""
|-Output – SSL
No | File | Keterangan |
---|---|---|
1 | rootCAMandiri.cer | Certificate Authority untuk verifikasi penerbit sertifikat selain Adobe Reader |
2 | rootCAMandiri.fdf | Certificate Authority Installer untuk Adobe Reader |
3 | SubMandiri1DigiSign.pfx, SubMandiri2DigiSign.pfx, … | Digunakan untuk menandatangani berkas, membutuhkan password yang digunakan pada saat pembuatan berkas pfx ini (lihat step 5, setting password di step 1) |
- Kelebihan
- Dapat digunakan untuk verifikasi berkas elektronik secara langsung melalui program pembaca PDF seperti Adobe Acrobat, Foxit Reader dan sebagainya
- Sertifikat didapatkan secara cuma-cuma (dibuat sendiri)
- Kekurangan
- Perlu menambahkan Certificate Authority ke program pembaca PDF
- Tidak dapat digunakan untuk verifikasi ketika berkas dicetak
- Siapapun bisa membuat Certificate Authority palsu dengan mengatas namakan CA milik kita
One reply on “Tanda Tangan Elektronik (TTE) Mandiri”
[…] Proses melakukan tanda tangan digital dapat dibaca di https://pdsi.unisayogya.ac.id/tanda-tangan-elektronik-tte-mandiri/ […]