11

Windows SDKには、証明書を使用してファイルに署名できるsigntool.exeというツールが付属しています。私は同じことをする必要がありますが、バックグラウンドサービスであるため、同じことを行うためのライブラリ(できればマネージコードですが、COMでも可能です)を探しています。何か案は?

答えが見つかりました。X.509証明書を使用して.NETでファイルに署名する方法は次のとおりです。

CmsSigner signer = new CmsSigner();
signer.Certificate = new X509Certificate2(certificate);

SignedCms content = new SignedCms(new ContentInfo(File.ReadAllBytes(fileToSign)));
content.ComputeSignature(signer, true);
byte[] signedFile = content.Encode();

string signedFileName = fileToSign + ".signed";
File.WriteAllBytes(signedFileName, signedFile);

Console.WriteLine("Signed file: " + signedFileName);

ここで、certificateは、証明書を含む.pfxファイルへのパスであり、fileToSignは署名するファイルです。

4

4 に答える 4

3

SignTool は、Crypto API の COM ラッパーである CAPICOM を使用しています。どちらでも使用できます。CAPICOM をご利用の場合は、こちらで情報を確認できます。

于 2009-02-04T10:29:34.020 に答える
0

Sebastienと同じ問題が発生しています。APIを調べると、これはエンベロープメッセージに署名するためのものであるように見えます。Authenticode(signtoolが行うコード署名)は異なります。そのため、署名後にEXEが実行されません。

私はまだ代替案を探しています。

于 2010-10-12T15:26:10.730 に答える
-1

それを回避する方法をスクリプト化することはできませんか? 正しい引数と入力を与える単純なバッチ ファイルを作成しますか? これは、UNIX サーバーでこの問題が発生した場合に行うことです。

于 2009-02-04T10:30:51.243 に答える