Categories
Tutorial, Manual, Tips dan Trik

Tanda Tangan Elektronik (TTE) Mandiri

Daftar Isi

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

  1. Membuka pengaturan
    • Buka menu edit, pilih preferences
    • Pada jendela preferences, pilih kategori signatures
    • Pada bagian identities & trusted certificates, klik tombol more
  2. Impor sertifikat terpercaya
    • Pilih trusted certificates
    • Klik tombol import
  3. Memilih sertifikat
    • Klik tombol browse
    • Pilih Root CA yang akan dipercaya, misalnya rootCAMandiri.cer
    • Klik tombol open
  4. 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
  5. Ekspor sertifikat
    • Pilih sertifikat yang baru saja diimpor
    • Klik tombol export
  6. 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

NoFileKeterangan
1rootCAMandiri.cerCertificate Authority untuk verifikasi penerbit sertifikat selain Adobe Reader
2rootCAMandiri.fdfCertificate Authority Installer untuk Adobe Reader
3SubMandiri1DigiSign.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

By basit

Biro Pengembangan Teknologi Dan Sistem Informasi

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.