Implementasi Tanda Tangan Digital dengan PHP Code


Tanda tangan digital merupakan tanda tangan seseorang dalam bentuk digital. Konsep termudah yang bisa dipahami oleh semua orang. Oleh karena itu syarat yang harus di penuhi oleh Tanda tangan digital adalah sbb:
  1. UNIK (tidak ada yang sama satu dengan yang lain)
  2. Dapat memberikan informasi siapa pemiliknya
  3. SAH dimata HUKUM
Dari ketiga hal diatas, Tanda tangan digital dapat menjamin :
Sumber : https://osd.lemsaneg.go.id/public/home
Oleh karena itu disini saya mencoba mendokumentasikan hasil Implementasi Tanda tangan digital pada aplikasi berbasis Web dengan bahasa pemrograman PHP.
Kebutuhan untuk implementasi :

  1. PHP 7 (sangat direkomendasi)
  2. Library TCPDF (https://github.com/tecnickcom/tcpdf) (direkomendasikan)
  3. Library PDF Generator seperti FPDF, mPDF, DOMPDF, Snappy, dll (opsional)
  4. Framework (sesuai pilihan) disini saya menggunakan CI
  5. Local Server (sesuai pilihan) disini saya mengguakan Apache dari XAMPP
  6. Sertifikat Elektronik dan Kunci Privat (yang di enkripsi)
Download library TCPDF pada link berikut Library TCPDF, selanjutnya letakan library TCPDF tersebut sesuai dengan Framework yang anda gunakan. 
Contoh saya letakan pada direktori C:\xampp\htdocs\modultte\application\libraries\
selanjutnya kita buat view dengan tampilan sebagai berikut:
source code :
 <form action="<?php echo site_url('sign/signpdf'); ?>" method="POST" enctype="multipart/form-data">  
      <label class="btn btn-warning btn-block">  
        Pilih File PDF<input type="file" name="file" id="file" required="true" multiple style="display: none;" accept=".pdf"><br>  
      </label>  
      <label class="btn btn-warning btn-block">  
        Pilih Sertifikat Anda<input type="file" name="pub" id="pub" required="true" multiple style="display: none;" accept=".crt,.pem"><br>  
      </label>  
      <label class="btn btn-warning btn-block">  
        Pilih Kunci Privat Anda<input type="file" name="priv" id="priv" required="true" multiple style="display: none;" accept=".pem,.key"><br>  
      </label>  
        PASSPHRASE &nbsp;<input type="password" name="password" id="password" required="true"><br>  
        &nbsp;  
      <button type="submit" class="btn btn-success btn-block">Sign File</button><br>  
     </form>  

Selanjutnya buat sebuah controller untuk melakukan Signing dokumen PDF yang di inputkan:
$filename = str_replace(' ','','DocSign_' . date('YmdHis') . '.pdf');  
$pass = $this->input->post('password');  
$this->load->library('tcpdf/tcpdf_import');  
$this->load->library('fpdi/Fpdi');   
class_exists('TCPDF', true);  
$tcpdf = new FPDI(); 
 $row = $tcpdf->setSourceFile($file);
              for($i=1;$i<=$row;$i++){  
                $tcpdf->addPage();  
                $tplIdx = $tcpdf->importPage($i);  
                $tcpdf->useTemplate($tplIdx);  
              }
$taut='Diisikan dengan informasi yang diinginkan'; #link download file pdf yang telah di tanda tangani secara digital  
$tcpdf->write2DBarcode($taut, 'QRCODE,H', 20,190,20,20);  
              $info = array(  
                'Name' => 'Nama Penanda Tangan',  
                'Location' => 'ID',  
                'Reason' => 'Otentikasi Dokumen PDF',  
                'ContactInfo' => 'contact user',  
              );  
$tcpdf->setSignature(file_get_contents($pub), file_get_contents($priv), $pass, '', 2, $info);  
$tcpdf->Image(APPPATH.'cert/tte4.jpg', 117, 201, 60, 18, 'JPG'); 
$tcpdf->setSignatureAppearance(117, 201, 60, 18); 
$tcpdf->Output($filename, 'D');  
              
unlink($file.$filename);  
unlink($file);  
unlink($priv);  
unlink($pub);  
}}    

Selanjutnya tinggal di jalankan.
maka akan menghasilkan file PDF yang sudah di tanda tangani secara digital.
berikut hasilnya:

Demikian dokumentasi implementasi Tanda tangan digital pada file PDF pada aplikasi berbasis Web menggunakan PHP dg framework CI.
semoga bermanfaat,
terimakasih

Komentar

  1. saya sudah mengikuti tutorial yang anda berikan, akan tetapi hasilnya adalah sertifikat digital bukan tanda tangan digital...
    dan apakah bisa tcpdf menampilkan gambar tanda tangan digital seperti yang anda contohkan..??
    kalau tanda tangan digital tersebut dilakukan secara manual menggunakan adobe reader hal itu sangat mungkin dilakukan..
    mohon konfirmasinya pada nomor WA saya di +62 895-1698-1870

    BalasHapus
    Balasan
    1. Jadi beda antara tanda tangan digital dengan sertifikat digital.. bedanya adalah kalo sertifikat digital itu merupakan identitas elektronik suatu entitas dalam sebuah sistem elektronik. Atau bisa disebut KTP dalam dunia digital (gampangnya seperti itu). Nah sertifikat digital ini yg digunakan sebagai sapah satu kebutuhan yg diperlukan saat melakukan tanda tangan digital pada sebuah dokumen digital.

      Hapus
    2. Kalo visualisasi TTD dlm bentuk sebuah dokumen itu bisa di lakukan spt yg ada pada aplikasi adobe. Dg mnggunakan fungsi setSignatureAppearence() kalo di lib TCPDF

      Hapus
  2. Assalamualaikum wr wb
    saya sudah mengikuti tutorial pada artikel ini, alhamdulillah berjalan dengan lancar dan sangat membantu.
    apakah untuk proses verifikasi tanda tangan pada file pdf juga dapat dilakukan dengan tcpdf atau dengan lib lain ?

    BalasHapus
    Balasan
    1. untuk verifikasi dengan lib laen, akan di publish pada tulisan berikutnya

      Hapus
  3. iya mas, kayanya penjelasan kurang lengkap, kalo boleh mohon ijin untuk source nya

    BalasHapus
  4. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  5. cara membuat Sertifikat Elektronik dan Kunci Privat saat kita memilih itu darimana,bisa dijelaskan.terima kasih

    BalasHapus
  6. mohon tutorial lengkapnya dong

    BalasHapus
  7. Boleh minta source codenya mas?

    BalasHapus

Posting Komentar