セキュリティと署名
セキュリティと署名
Aspose.PDF FOSS for .NET は PDF デジタル署名、証明書ベースの暗号化、およびカスタム セキュリティ ハンドラをサポートします。署名ワークフローには PdfSigner を、証明書管理には PdfCertificate を使用してください。
文書に署名する
PdfSigner は PFX 証明書を使用して PDF にデジタル署名を適用します。
var cert = PdfCertificate.FromPfx("certificate.pfx", "password");
var signer = new PdfSigner();
signer.Sign(doc, cert);
doc.Save("signed.pdf");署名の検証
var signer = new PdfSigner();
bool valid = signer.Verify(doc);
Console.WriteLine($"Signature valid: {valid}");視覚的な外観で署名
signer.SignWithAppearance(doc, cert, signatureField, appearance);証明書管理
PdfCertificate は PFX ファイルまたは DER エンコードされたファイルから証明書をロードします。
// From PFX
var cert = PdfCertificate.FromPfx("cert.pfx", "password");
// From DER files (certificate + key)
var cert2 = PdfCertificate.FromDerFiles("cert.der", "key.der");証明書ベースの暗号化
CertificateEncryptionOptions は、指定された証明書保持者だけが開くことができるように PDF を暗号化します。
var options = new CertificateEncryptionOptions(cert);カスタム セキュリティ ハンドラ
カスタム暗号化および復号ロジックのために ICustomSecurityHandler を実装してください。
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; }
}署名アルゴリズム情報
SignatureAlgorithmInfo は、既存の署名で使用されているアルゴリズムを説明しています。
var info = new SignatureAlgorithmInfo("SHA256withRSA");
Console.WriteLine(info.ToString());ヒントとベストプラクティス
- 常に文書を最終段階で署名してください — 署名後に変更を加えると署名が無効になります。
- 証明書の保存には強力なパスワードを使用した PFX ファイルを使用してください。
- 改ざんを検出するために、文書を読み込んだ後に署名を検証してください。
- 証明書ベースの暗号化には受信者の公開鍵証明書が必要です。
- 標準の暗号化で不十分な場合にのみ
ICustomSecurityHandlerを実装してください。
一般的な問題
| 問題 | 原因 | 対策 |
|---|---|---|
| 署名が無効として表示される | 署名後にドキュメントが変更された | すべての変更が完了した後に再署名してください |
| PFX の読み込みに失敗する | パスワードが間違っているか、ファイルが破損しています | パスワードとファイルの完全性を確認してください |
| 暗号化により開けない | 所有者パスワードが提供されていません | 正しい所有者またはユーザーパスワードを使用してください |
よくある質問
サポートされている署名アルゴリズムは何ですか?
RSA と SHA-256、SHA-384、SHA-512 は一般的にサポートされています。利用可能なアルゴリズムは証明書のキータイプに依存します。
複数の署名を追加できますか?
はい。各署名は文書内の別々の署名フィールドに適用されます。
署名には商用証明書が必要ですか?
いいえ。自己署名証明書はテスト用に機能します。実稼働環境では、使用してください
信頼できるCAからの証明書。
API リファレンス概要
| Class / Method | Description |
|---|---|
PdfSigner | PDF ドキュメントに署名および検証 |
PdfSigner.Sign | デジタル署名を適用 |
PdfSigner.Verify | 署名の有効性をチェック |
PdfSigner.SignWithAppearance | ビジュアル署名フィールドで署名 |
PdfCertificate | PFX および DER 形式の証明書ローダー |
PdfCertificate.FromPfx | パスワード付き PFX ファイルからロード |
PdfCertificate.FromDerFiles | DER エンコードされたファイルからロード |
CertificateEncryptionOptions | 証明書ベースの PDF 暗号化 |
ICustomSecurityHandler | カスタム暗号化/復号化用インターフェイス |
EncryptionParameters | カスタムセキュリティハンドラに渡されるパラメータ |
SignatureAlgorithmInfo | 署名アルゴリズムに関するメタデータ |