Keamanan dan Tanda Tangan
Keamanan dan Tanda Tangan
Aspose.PDF FOSS for .NET mendukung tanda tangan digital PDF, enkripsi berbasis sertifikat, dan penangan keamanan khusus. Gunakan PdfSigner untuk alur kerja penandatanganan dan PdfCertificate untuk manajemen sertifikat.
Menandatangani dokumen
PdfSigner menerapkan tanda tangan digital pada PDF menggunakan sertifikat PFX.
var cert = PdfCertificate.FromPfx("certificate.pfx", "password");
var signer = new PdfSigner();
signer.Sign(doc, cert);
doc.Save("signed.pdf");Memverifikasi tanda tangan
var signer = new PdfSigner();
bool valid = signer.Verify(doc);
Console.WriteLine($"Signature valid: {valid}");Penandatanganan dengan tampilan visual
signer.SignWithAppearance(doc, cert, signatureField, appearance);Manajemen Sertifikat
PdfCertificate memuat sertifikat dari file PFX atau file yang dienkode DER.
// From PFX
var cert = PdfCertificate.FromPfx("cert.pfx", "password");
// From DER files (certificate + key)
var cert2 = PdfCertificate.FromDerFiles("cert.der", "key.der");Enkripsi berbasis sertifikat
CertificateEncryptionOptions mengenkripsi PDF sehingga hanya pemegang sertifikat yang ditentukan yang dapat membukanya.
var options = new CertificateEncryptionOptions(cert);Handler keamanan khusus
Implementasikan ICustomSecurityHandler untuk logika enkripsi dan dekripsi khusus.
public class MyHandler : ICustomSecurityHandler
{
public void Initialize(EncryptionParameters parameters) { }
public byte[] CalculateEncryptionKey() { /* ... */ return Array.Empty<byte>(); }
public byte[] GetUserKey() { /* ... */ return Array.Empty<byte>(); }
public byte[] GetOwnerKey() { /* ... */ return Array.Empty<byte>(); }
public bool IsOwnerPassword(string password) { /* ... */ return false; }
public bool IsUserPassword(string password) { /* ... */ return false; }
}Informasi algoritma tanda tangan
SignatureAlgorithmInfo menjelaskan algoritma yang digunakan dalam tanda tangan yang ada.
var info = new SignatureAlgorithmInfo("SHA256withRSA");
Console.WriteLine(info.ToString());Tips dan Praktik Terbaik
- Selalu tanda tangani dokumen sebagai langkah terakhir — setiap modifikasi setelah penandatanganan membatalkan tanda tangan.
- Gunakan file PFX dengan kata sandi yang kuat untuk penyimpanan sertifikat.
- Verifikasi tanda tangan setelah memuat dokumen untuk mendeteksi manipulasi.
- Enkripsi berbasis sertifikat memerlukan sertifikat kunci publik penerima.
- Implementasikan
ICustomSecurityHandlerhanya ketika enkripsi standar tidak memadai.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
| Tanda tangan muncul sebagai tidak valid | Dokumen diubah setelah penandatanganan | Tandatangani kembali setelah semua modifikasi selesai |
| Pemuatan PFX gagal | Kata sandi salah atau file rusak | Verifikasi kata sandi dan integritas file |
| Enkripsi mencegah pembukaan | Kata sandi pemilik tidak diberikan | Gunakan kata sandi pemilik atau pengguna yang benar |
FAQ
Algoritma tanda tangan apa yang didukung?
RSA dengan SHA-256, SHA-384, dan SHA-512 biasanya didukung. Algoritma yang tersedia bergantung pada tipe kunci sertifikat.
Bisakah saya menambahkan beberapa tanda tangan?
Ya. Setiap tanda tangan diterapkan pada bidang tanda tangan terpisah dalam dokumen.
Apakah penandatanganan memerlukan sertifikat komersial?
Tidak. Sertifikat yang ditandatangani sendiri berfungsi untuk pengujian. Untuk produksi, gunakan sebuah sertifikat dari CA tepercaya.
Ringkasan Referensi API
| Class / Method | Description |
|---|---|
PdfSigner | Menandatangani dan memverifikasi dokumen PDF |
PdfSigner.Sign | Menerapkan tanda tangan digital |
PdfSigner.Verify | Memeriksa keabsahan tanda tangan |
PdfSigner.SignWithAppearance | Menandatangani dengan bidang tanda tangan visual |
PdfCertificate | Pemuat sertifikat untuk format PFX dan DER |
PdfCertificate.FromPfx | Muat dari file PFX dengan kata sandi |
PdfCertificate.FromDerFiles | Muat dari file yang dienkode DER |
CertificateEncryptionOptions | Enkripsi PDF berbasis sertifikat |
ICustomSecurityHandler | Antarmuka untuk enkripsi/dekripsi khusus |
EncryptionParameters | Parameter yang diteruskan ke penangan keamanan khusus |
SignatureAlgorithmInfo | Metadata tentang algoritma tanda tangan |