[解決済み] OCSPが埋め込まれたiTextを使用してPDFに署名する方法
質問事項
最初の画像は、LTVが有効なpdf署名のものです。このドキュメントは私が作成したものではありません。
失効情報では、以下の文章が表示されます。
選択された証明書は、署名に埋め込まれたオンライン証明書ステータスプロトコル(OCSP)応答を使用して検証した結果、失効していないため有効であるとみなされます。
iTextを使用してpdf文書に署名し、OCSPも適用しています。
OCSPVerifier ocspVerifier = new OCSPVerifier(null, null); // null,null >https://stackoverflow.com/questions/40765907/itextsharp-ocspclientbouncycastle-constructor-is-deprecated-whats-the-replacem
IOcspClient ocspClient = new OcspClientBouncyCastle(ocspVerifier);
var ocsp = ocspClient.GetEncoded(ocspCert,ocspRootCert, "http://www.myurl.com/aia/ocsp");
if (ocsp == null)
Console.WriteLine("oscp is null");
else
Console.WriteLine("ocsp is not null");
//Create the pkcs7 container
PdfPKCS7 sgn = new PdfPKCS7(null, c.ToArray(), HashAlgorithm, false);
Console.WriteLine("PdfPKCS7");
byte[] sh = sgn.GetAuthenticatedAttributeBytes(hash, ocsp, null, PdfSigner.CryptoStandard.CMS);
Console.WriteLine("GetAuthenticatedAttributeBytes");
//Load the signature via pkcs11 hardware
byte[] extSignature = GetSignatureFromHashViaPkcs11(sh, pin);
Console.WriteLine("GetSignatureFromHashViaPkcs11");
sgn.SetExternalDigest(extSignature, null, DigestEncryptionAlgorithm);
Console.WriteLine("SetExternalDigest");
var ret = sgn.GetEncodedPKCS7(hash, tsaClient, ocsp, null, PdfSigner.CryptoStandard.CMS);
Console.WriteLine("GetEncodedPKCS7");
Console.WriteLine($"IsTsp : {sgn.IsTsp()}");
この場合、生成された署名は有効であると表示されますが、LTVは有効ではありません。
失効情報では、以下の文章が表示されます。
選択された証明書は、オンラインで取得したオンライン証明書ステータスプロトコル(OCSP)を使用してリアルタイムで検証した結果、失効していないため有効であるとみなされます。
私の推測では、この違いがLTVの問題の原因になっていると思います。iTextでOCSPをオンラインではなく、埋め込むように設定するにはどうしたらよいでしょうか?
解決方法は?
ここで取得したOCSPレスポンスを1つ追加します。
var ocsp = ocspClient.GetEncoded(ocspCert,ocspRootCert, "http://www.myurl.com/aia/ocsp");
しかし、これは署名者証明書の OCSP レスポンスを取得するのではなく、PKI の OCSP 証明書を取得するものです。
必要なのは、関係するすべての証明書とそのチェーン(トラストアンカーを除く)の失効情報です。
このように
-
は、署名者証明書とそのチェーンから始める必要があります。
例)もしあなたの
c
がチェーンとしてソートされている場合、OCSPレスポンスはc[0], c[1]
であればc[1], c[2]
,c[2], c[3]
など、トラストアンカーまで。 -
署名にタイムスタンプが含まれる場合、TSA証明書についても手順1を実行する。
-
次に、これらのOCSPレスポンスを検査し、その署名者証明書を取得し、そのチェーンを構築し、それらすべてに対してステップ1を実行する必要があります。 ただし を持つ証明書。
id-pkix-ocsp-nocheck
の拡張子を持つ。その証明書自身が署名した証明書に対するOCSPレスポンスは、明らかに10円の価値もないのでご注意を...。
関連
-
[解決済み] [Solved] 1つ以上のエンティティで検証に失敗しました。詳細は'EntityValidationErrors'プロパティを参照してください [重複]。
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み] 保護レベルによりアクセス不能になりました。
-
解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C# [解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C#.
-
[解決済み】SmtpException: トランスポート接続からデータを読み取れません:net_io_connectionclosed
-
[解決済み】ソケットのアドレス(プロトコル/ネットワークアドレス/ポート)は、通常1つしか使用できない?
-
[解決済み】Sequence contains no matching element(シーケンスにマッチする要素がない
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み】「...は'型'であり、与えられたコンテキストでは有効ではありません」を解決するにはどうすればよいですか?(C#)
-
[解決済み】ファイルへの読み書きの際に共有違反のIOExceptionが発生する C#
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー。「戻り値を変更できません」 C#
-
[解決済み】Ajax処理で「無効なJSONプリミティブ」と表示される件
-
[解決済み】WebForms UnobtrusiveValidationModeは、jqueryのScriptResourceMappingを必要とする
-
[解決済み] 保護レベルによりアクセス不能になりました。
-
[解決済み] 'SubSonic.Schema .DatabaseColumn' 型のオブジェクトをシリアライズする際に、循環参照が検出されました。
-
[解決済み】値をNULLにすることはできません。パラメータ名:source
-
[解決済み】C#のequal to演算子でtextとvarcharのデータ型は互換性がない
-
[解決済み] 2つのリストを結合する
-
[解決済み] ...基礎となる接続は閉じられました。予期しないエラーが受信で発生しました
-
[解決済み】 C# 条件演算子エラー 代入、call、increment、decrement、await、new object 式のみ文として使用可能です。