Daftar Isi
- Kelebihan dan Kekurangan Dua Tanda Tangan Elektronik (TTE)
- TTE Berkas Elektronik dengan Sertifikat Digital (Self Signed) - SSL
- |-APK Signing
- |-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
Secara sederhana, digital signature adalah sebuah data tambahan yang terenkripsi serta berisi hash dari dokumen dan informasi tentang peristiwa tanda tangan.
Di dalam implementasinya untuk dokumen PDF, pertama-tama dibuat sebuah form PDF kemudian diisi dengan hash dari dokumen yang telah dienkripsi.
Apabila terjadi perubahan, maka tidak merubah tanda tangan yang lama, tetapi menambah form baru yang berisi hash baru dan informasi baru.
Terdapat juga mekanisme untuk melakukan verifikasi apakah penandatangan masih valid untuk melakukan tanda tangan atau tidak, selengkapnya dapat dibaca di sini.
Terdapat juga mekanisme untuk melakukan penandaan waktu kapan dokumen tersebut ditanda tangani dengan waktu server yang dapat dipercaya.
Sumber: https://www.youtube.com/watch?v=IbiCK6hNQK0
|-APK Signing
|-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/ […]