Panduan Lengkap Setup Tanda Tangan Elektronik Tersertifikasi BSrE untuk Sistem Anda
T
Kembali ke Blog

Panduan Lengkap Setup Tanda Tangan Elektronik Tersertifikasi BSrE untuk Sistem Anda

Regulasi & Compliance
Tim Pilar Inovasi 21 Jul 2026 10 min baca 2,019 kata 14
Transformasi digital menuntut efisiensi dan keamanan. Pelajari langkah demi langkah implementasi tanda tangan elektronik tersertifikasi BSrE yang memiliki kekuatan hukum setara tanda tangan basah. Artikel ini akan memandu Anda dari konsep dasar hingga integrasi teknis ke sistem seperti SIMRS atau E-Office.

Di era digitalisasi yang semakin pesat, efisiensi operasional dan validitas hukum dokumen menjadi krusial, terutama bagi institusi seperti rumah sakit, klinik, atau perusahaan dengan sistem E-Office yang kompleks. Proses penandatanganan manual tidak hanya memakan waktu dan biaya, tetapi juga rentan terhadap pemalsuan dan inefisiensi alur kerja. Bayangkan tumpukan rekam medis yang membutuhkan tanda tangan dokter, persetujuan tindakan medis, atau dokumen kontrak yang harus berpindah tangan. Situasi ini seringkali menghambat laju layanan dan pengambilan keputusan. Di sinilah peran tanda tangan elektronik tersertifikasi menjadi sangat vital. Mengintegrasikan Tanda Tangan Elektronik (TTE) yang dikeluarkan oleh Badan Siber dan Sandi Negara (BSSN) melalui Penyelenggara Sertifikasi Elektronik (PSrE) seperti BSrE (Balai Sertifikasi Elektronik) bukan hanya sebuah opsi, melainkan kebutuhan mendesak untuk mencapai kepatuhan regulasi dan efisiensi maksimal. Artikel ini akan memandu Anda, para Manajer IT Rumah Sakit, pemilik klinik, manajer operasional, dan pengambil keputusan, melalui setiap tahapan setup TTE tersertifikasi BSrE, mulai dari konsep dasar hingga implementasi teknis yang mendalam, lengkap dengan contoh kode dan best practices yang actionable. Kami akan membahas bagaimana TTE BSrE dapat diaplikasikan secara konkret dalam sistem seperti SIMRS, SIM Klinik, atau E-Office, menjamin integritas dan keabsahan dokumen digital Anda.

Konsep Dasar Tanda Tangan Elektronik Tersertifikasi BSrE

Tanda Tangan Elektronik (TTE) tersertifikasi BSrE adalah bentuk digital dari tanda tangan basah yang memiliki kekuatan hukum dan akibat hukum yang sah, sebagaimana diatur dalam Undang-Undang Nomor 11 Tahun 2008 tentang Informasi dan Transaksi Elektronik (UU ITE) jo. Undang-Undang Nomor 19 Tahun 2016, serta Peraturan Pemerintah Nomor 71 Tahun 2019 tentang Penyelenggaraan Sistem dan Transaksi Elektronik, khususnya Pasal 59. BSrE sendiri merupakan salah satu Penyelenggara Sertifikasi Elektronik (PSrE) yang terdaftar dan diakui oleh Kementerian Komunikasi dan Informatika Republik Indonesia, di bawah naungan Badan Siber dan Sandi Negara (BSSN). Ini berarti TTE yang diterbitkan oleh BSrE telah memenuhi standar keamanan dan validitas yang ketat, menjamin aspek non-repudiasi, otentikasi, dan integritas data.

Perbedaan mendasar antara TTE biasa dan TTE tersertifikasi BSrE terletak pada validitas hukum dan proses verifikasi identitas. TTE biasa mungkin hanya berupa gambar digital atau OTP sederhana yang tidak melalui proses verifikasi identitas yang ketat, sehingga kekuatan hukumnya lemah dan mudah disangkal. Sebaliknya, TTE tersertifikasi BSrE melibatkan verifikasi identitas penanda tangan yang robust, baik secara online maupun offline, serta penggunaan sertifikat digital yang dikeluarkan oleh lembaga terpercaya. Sertifikat ini berisi informasi identitas penanda tangan, kunci publik, dan masa berlaku, yang secara kriptografis mengikat identitas penanda tangan dengan dokumen yang ditandatangani.

Secara teknis, proses TTE melibatkan beberapa komponen kunci. Pertama, kunci privat (private key) yang hanya dimiliki oleh penanda tangan dan digunakan untuk membuat tanda tangan. Kedua, kunci publik (public key) yang terkait dengan kunci privat dan digunakan oleh pihak lain untuk memverifikasi tanda tangan. Ketiga, sertifikat digital yang mengikat kunci publik dengan identitas penanda tangan, dikeluarkan oleh PSrE seperti BSrE. Keempat, timestamp yang menunjukkan waktu penandatanganan, penting untuk non-repudiasi.

Alur kerja TTE tersertifikasi BSrE secara umum dimulai ketika pengguna ingin menandatangani dokumen digital. Dokumen tersebut kemudian di-hash menggunakan algoritma kriptografi (misalnya SHA-256) untuk menghasilkan representasi unik dari dokumen. Hash ini kemudian dienkripsi menggunakan kunci privat penanda tangan. Hasil enkripsi ini adalah tanda tangan digital yang kemudian dilekatkan pada dokumen, bersama dengan sertifikat digital penanda tangan. Ketika pihak lain ingin memverifikasi tanda tangan, mereka akan menggunakan kunci publik penanda tangan (yang tersedia dalam sertifikat digital) untuk mendekripsi tanda tangan. Hash yang dihasilkan dari dekripsi ini kemudian dibandingkan dengan hash dokumen asli yang dihitung ulang. Jika keduanya cocok, dan sertifikat digital valid, maka tanda tangan dianggap sah, membuktikan bahwa dokumen tidak berubah sejak ditandatangani dan berasal dari penanda tangan yang sah. Proses ini memastikan integritas, keaslian, dan non-repudiasi dokumen, sangat penting dalam konteks dokumen medis elektronik sesuai Permenkes No. 24 Tahun 2022.

Langkah Teknis Implementasi Integrasi BSrE

Mengintegrasikan Tanda Tangan Elektronik (TTE) tersertifikasi BSrE ke dalam sistem Anda memerlukan perencanaan dan eksekusi teknis yang cermat. Fokus utama adalah pada komunikasi aman antara sistem aplikasi Anda dengan API BSrE. Sebelum memulai integrasi, pastikan Anda telah memenuhi beberapa prasyarat penting. Pertama, Anda harus memiliki Akun BSrE yang telah terverifikasi dan API Key yang sah yang diterbitkan oleh BSrE untuk aplikasi Anda. Proses pendaftaran dan verifikasi identitas ini biasanya melibatkan langkah-langkah administratif yang detail, termasuk verifikasi identitas pengguna akhir atau entitas organisasi. Kedua, pastikan infrastruktur server Anda siap, misalnya menggunakan Ubuntu Server 22.04 LTS dengan Nginx 1.22.x sebagai web server, PHP 8.2 FPM untuk pemrosesan backend, dan PostgreSQL 16 sebagai database. Komunikasi dengan API BSrE umumnya menggunakan protokol HTTPS, sehingga sertifikat SSL/TLS pada server Anda adalah keharusan.

Metode integrasi utama dengan BSrE adalah melalui RESTful API. BSrE menyediakan serangkaian endpoint API untuk berbagai fungsi, seperti inisiasi penandatanganan, verifikasi tanda tangan, dan pengelolaan sertifikat. Meskipun BSrE tidak selalu menyediakan SDK/library resmi untuk semua bahasa pemrograman, Anda dapat membuat wrapper atau service layer kustom di aplikasi Anda untuk mempermudah interaksi dengan API BSrE. Misalnya, dalam lingkungan Laravel 11.x, Anda bisa membuat service class khusus yang mengelola semua panggilan API BSrE.

Berikut adalah contoh alur integrasi TTE BSrE:

  1. Persiapan Dokumen: Ketika pengguna di SIMRS atau E-Office ingin menandatangani dokumen (misalnya rekam medis, surat keputusan), sistem Anda harus terlebih dahulu mempersiapkan dokumen tersebut. Ini seringkali melibatkan konversi ke format yang stabil seperti PDF.
  2. Generasi Hash Dokumen: Dokumen yang akan ditandatangani kemudian di-hash menggunakan algoritma kriptografi standar, seperti SHA-256. Hash ini adalah representasi unik dari dokumen dan akan dikirim ke BSrE. Contohnya, hash_dokumen = sha256(isi_dokumen).
  3. Panggilan API Inisiasi Penandatanganan: Sistem backend Anda (misalnya menggunakan Laravel 11.x) akan memanggil API BSrE untuk memulai proses penandatanganan. Payload yang dikirim biasanya mencakup hash dokumen, ID unik dokumen di sistem Anda, ID pengguna yang akan menandatangani, dan URL Callback. URL Callback ini sangat penting; BSrE akan mengirimkan hasil penandatanganan ke URL ini setelah proses selesai di sisi BSrE.
  4. Proses Penandatanganan di BSrE: Setelah menerima permintaan, BSrE akan memvalidasi data dan menginisiasi proses penandatanganan kepada pengguna. Ini seringkali melibatkan otentikasi multi-faktor (MFA), seperti pengiriman One-Time Password (OTP) ke nomor telepon terdaftar pengguna, atau konfirmasi melalui aplikasi mobile BSrE. Pengguna harus mengonfirmasi penandatanganan.
  5. Penerimaan Callback dari BSrE: Setelah pengguna berhasil menandatangani, BSrE akan mengirimkan hasil penandatanganan ke URL Callback yang Anda sediakan. Payload callback ini akan berisi status penandatanganan (berhasil/gagal), data tanda tangan digital, sertifikat elektronik yang digunakan, dan informasi relevan lainnya.
  6. Penyimpanan dan Asosiasi Tanda Tangan: Sistem Anda harus menerima dan memproses data dari callback. Data tanda tangan digital dan sertifikat elektronik kemudian disimpan dan diasosiasikan dengan dokumen yang bersangkutan dalam database (misalnya PostgreSQL 16). Dokumen asli yang telah ditandatangani secara elektronik (misalnya PDF dengan PAdES/CAdES embedded signature) juga dapat disimpan.

Untuk antarmuka pengguna, Anda bisa menggunakan framework seperti Vue.js 3 untuk memberikan pengalaman yang responsif dan intuitif kepada pengguna, misalnya dengan menampilkan status penandatanganan secara real-time atau notifikasi saat ada dokumen yang menunggu untuk ditandatangani.

Contoh Kode Implementasi Integrasi API TTE BSrE

Bagian ini akan menyajikan contoh kode konkret untuk integrasi API TTE BSrE, khususnya menggunakan PHP dengan framework Laravel 11.x dan Guzzle HTTP client. Kami akan fokus pada dua aspek utama: membuat service untuk memanggil API BSrE dan menangani callback dari BSrE.

1. Service untuk Inisiasi Penandatanganan Dokumen ke API BSrE

Pertama, kita akan membuat sebuah service class di Laravel yang bertanggung jawab untuk berkomunikasi dengan API BSrE. Kelas ini akan menggunakan Guzzle HTTP Client untuk mengirim permintaan HTTP. Pastikan Guzzle sudah terinstal di proyek Laravel Anda (composer require guzzlehttp/guzzle).

<?phpnamespace App\'Services;'use GuzzleHttp\'Client;'use GuzzleHttp\'Exception\'RequestException;class BSrEService{    protected $client;    protected $baseUrl;    protected $apiKey;    public function __construct()    {        $this->baseUrl = env('BSRE_API_BASE_URL', 'https://api.bsre.go.id/v1');        $this->apiKey = env('BSRE_API_KEY');        $this->client = new Client([            'base_uri' => $this->baseUrl,            'timeout'  => 30.0,            'headers'  => [                'Authorization' => 'Bearer ' . $this->apiKey,                'Content-Type'  => 'application/json',                'Accept'        => 'application/json',            ],        ]);    }    /**     * Mengirim permintaan inisiasi penandatanganan ke BSrE.     *     * @param string $documentHash Hash SHA-256 dari dokumen yang akan ditandatangani.     * @param string $userId ID pengguna BSrE yang akan menandatangani.     * @param string $documentId ID unik dokumen di sistem Anda.     * @param string $callbackUrl URL callback untuk menerima hasil dari BSrE.     * @param string $reason Alasan penandatanganan (opsional).     * @return array|null     */    public function requestSigning(string $documentHash, string $userId, string $documentId, string $callbackUrl, string $reason = 'Menyetujui Dokumen')    {        try {            $response = $this->client->post('/signature/request', [                'json' => [                    'document_hash' => $documentHash,                    'signer_id'     => $userId,                    'document_id'   => $documentId,                    'callback_url'  => $callbackUrl,                    'reason'        => $reason,                    'meta_data'     => ['app_name' => 'SIMRS_Nugroho'], // Metadata tambahan                    // 'display_name' => 'Rekam Medis Pasien XYZ' // Jika BSrE mendukung custom display name                ],            ]);            return json_decode($response->getBody()->getContents(), true);        } catch (RequestException $e) {            // Log error, kirim notifikasi, dll.            
ollbar()->error('BSrE API Request Error: ' . $e->getMessage(), ['request' => $e->getRequest(), 'response' => $e->hasResponse() ? $e->getResponse() : null]);            return null;        }    }}

Kode di atas mendefinisikan kelas BSrEService yang mengelola komunikasi dengan API BSrE. Konstruktor menginisialisasi Guzzle Client dengan base_uri dan apiKey yang diambil dari environment variable (.env file) untuk keamanan (misalnya: BSRE_API_BASE_URL=https://api.bsre.go.id/v1 dan BSRE_API_KEY=YOUR_BSRE_API_KEY). Fungsi requestSigning mengirimkan permintaan POST ke endpoint /signature/request dengan payload yang mencakup hash dokumen, ID penanda tangan, ID dokumen dari sistem Anda, URL callback, dan alasan penandatanganan. Penting untuk mengelola pengecualian RequestException untuk menangani error komunikasi API dan melakukan logging yang tepat.

2. Controller untuk Menerima Callback dari BSrE

Setelah BSrE selesai memproses penandatanganan (baik berhasil maupun gagal), ia akan mengirimkan hasil ke URL Callback yang telah Anda daftarkan. Kita perlu membuat controller di Laravel untuk menangani permintaan POST ini.

<?phpnamespace App\'Http\'Controllers;'use App\'Models\'Document;'use Illuminate\'Http\'Request;'use Illuminate\'Support\'Facades\'Log;'class BSrECallbackController extends Controller{    /**     * Menangani callback dari BSrE setelah proses penandatanganan.     *     * @param Request $request     * @return \Illuminate\'Http\'JsonResponse     */    public function handleCallback(Request $request)    {        Log::info('BSrE Callback Received', $request->all());        // Validasi request jika BSrE menyediakan mekanisme signature/webhook secret        // if (! $this->verifyBSrESignature($request)) {        //    Log::warning('BSrE Callback Signature Mismatch', $request->all());        //    return response()->json(['message' => 'Invalid signature'], 403);        // }        $documentId = $request->input('document_id');        $status = $request->input('status'); // 'success', 'failed', 'cancelled'        $signatureData = $request->input('signature_data'); // Data tanda tangan (base64 encoded)        $certificateData = $request->input('certificate_data'); // Data sertifikat (base64 encoded)        $errorMessage = $request->input('error_message');        $document = Document::where('uuid', $documentId)->first();        if (! $document) {            Log::error('Document not found for BSrE callback', ['document_id' => $documentId]);            return response()->json(['message' => 'Document not found'], 404);        }        if ($status === 'success') {            $document->update([                'signed_by_bsre' => true,                'signature_data' => $signatureData,                'certificate_data' => $certificateData,                'signed_at' => now(),                'status' => 'signed'            ]);            // Lakukan verifikasi tanda tangan secara internal jika diperlukan            // $this->verifySignature($document->file_path, base64_decode($signatureData), base64_decode($certificateData));            Log::info('Document successfully signed by BSrE', ['document_id' => $documentId]);        } else {            $document->update([                'signed_by_bsre' => false,                'status' => 'signing_failed',                'signature_error' => $errorMessage            ]);            Log::warning('Document signing failed by BSrE', ['document_id' => $documentId, 'error' => $errorMessage]);        }        return response()->json(['message' => 'Callback processed successfully'], 200);    }    // Fungsi placeholder untuk verifikasi signature callback (jika BSrE menyediakan)    // protected function verifyBSrESignature(Request $request) {    //    // Implementasi verifikasi signature dari header X-BSrE-Signature atau sejenisnya    //    return true;    // }    // Fungsi placeholder untuk verifikasi tanda tangan secara internal (opsional)    // protected function verifySignature(string $filePath, string $signature, string $certificate) {    //    // Logika verifikasi kriptografis    //    return true;    // }}

Controller BSrECallbackController menerima permintaan POST dari BSrE. Kode ini melakukan logging terhadap payload yang diterima, mencari dokumen berdasarkan document_id, dan memperbarui status dokumen di database berdasarkan status yang dikirim oleh BSrE. Jika statusnya 'success', data tanda tangan dan sertifikat akan disimpan. Jika gagal, pesan error akan dicatat. Penting untuk mengimplementasikan mekanisme verifikasi signature callback jika BSrE menyediakannya (misalnya melalui header X-BSrE-Signature) untuk memastikan bahwa callback memang berasal dari BSrE dan bukan pihak lain yang tidak sah. Seluruh proses ini harus berjalan asinkron menggunakan Laravel Queue untuk menghindari timeout pada sisi BSrE dan memastikan responsivitas aplikasi Anda.

Contoh Payload, Penanganan Error, dan Verifikasi

Memahami struktur payload yang dikirim dan diterima dari API BSrE, serta bagaimana menangani potensi kesalahan, adalah kunci untuk integrasi yang robust. Berikut adalah contoh payload dan strategi penanganan error.

Contoh Payload Respons Sukses dari BSrE

Ketika permintaan penandatanganan berhasil diproses oleh BSrE dan pengguna telah mengkonfirmasi, BSrE akan mengirimkan payload callback ke URL yang Anda daftarkan. Struktur payload ini dapat bervariasi, namun umumnya akan mencakup informasi penting seperti berikut:

{  
Terakhir diperbarui 21 Jul 2026

Komentar

Komentar ditinjau sebelum tampil.

Belum ada komentar. Jadilah yang pertama!