トップ回答者
電子署名のタイムスタンプ(署名時刻)の取得方法

質問
-
お世話になります。
現在PowerShellでファイルに施された電子署名の情報を一覧表示するスクリプトを
作成しているのですが、タイムスタンプ(署名時刻)の取得方法が分かりません。
Get-AuthenticodeSignature コマンドで署名に関する情報は取得できたのです
が、その電子署名を行った時刻(タイムスタンプ)については取得できないようです。
ここで言うタイムスタンプとはエクスプローラーで署名されたファイルのプロパティを開
いた時のデジタル署名タブ、署名の一覧リストに存在するタイムスタンプのことです。
ファイルの署名時刻の取得方法をご存じの方がいらっしゃいましたらアドバイスいただ
きたいです。
よろしくお願いいたします。
回答
-
少し調べてみましたが、.NET Frameworkには任意のファイルの署名のタイムスタンプを取得する機能がないのかもしれません。
(.NETアプリが自分自身のマニフェストにつけられた署名のタイムスタンプを取得するにはManifestSignatureInformation.AuthenticodeSignatureで取れるようなのですが)
アンマネージドなdllを利用するしかないようなので、もしPowerShellでやるなら、C#でP/InvokeしたdllもしくはコードをAdd-Typeで読み込むことになるでしょう。
その参考例っぽいのを探してきましたが、タイムスタンプの値を取得する部分はtodoとなっていてこのままでは動きません。
c# - Get timestamp from Authenticode Signed files in .NET - Stack Overflow
http://stackoverflow.com/questions/3281057/get-timestamp-from-authenticode-signed-files-in-netあまり参考にはならないかもですが…
すべての返信
-
少し調べてみましたが、.NET Frameworkには任意のファイルの署名のタイムスタンプを取得する機能がないのかもしれません。
(.NETアプリが自分自身のマニフェストにつけられた署名のタイムスタンプを取得するにはManifestSignatureInformation.AuthenticodeSignatureで取れるようなのですが)
アンマネージドなdllを利用するしかないようなので、もしPowerShellでやるなら、C#でP/InvokeしたdllもしくはコードをAdd-Typeで読み込むことになるでしょう。
その参考例っぽいのを探してきましたが、タイムスタンプの値を取得する部分はtodoとなっていてこのままでは動きません。
c# - Get timestamp from Authenticode Signed files in .NET - Stack Overflow
http://stackoverflow.com/questions/3281057/get-timestamp-from-authenticode-signed-files-in-netあまり参考にはならないかもですが…
-
-
質問者さんと牟田口さんのおっしゃる通り、証明書の情報はとってこれますが、ファイル側にどうやって証明をされたかはとってこられないようですね。
signtool.exe、これってスタンプ日とれたでしょうか^^;
>ただ、エクスプローラーにて普通に取得できている情報が取得できないというのもなんだか腑に落ちない気もします。
写真や動画を見ていただいたらお分かりの通り、DLLを使っても厄介なことをExplorerはサラっとやってのけているので、あまりExplorereで取得できるから、というのは当たらないように存じます。
#Explorerで取得できる情報には簡単にスクリプトなどでアクセスできて欲しい、というのは私も同じ思いです。 -
signtool.exe、これってスタンプ日とれたでしょうか^^;
私が試した限りではverifyの /v オプションで「The signature is timestamped:」という部分に表示されています。
写真や動画を見ていただいたらお分かりの通り、DLLを使っても厄介なことをExplorerはサラっとやってのけているので、あまりExplorereで取得できるから、というのは当たらないように存じます。
#Explorerで取得できる情報には簡単にスクリプトなどでアクセスできて欲しい、というのは私も同じ思いです。まさにその通りで、Explorerが簡単に見せてくれるだけにその情報にはアクセスできるんじゃないかなーと勝手に期待していました。
需要が少ないから用意していないものだと納得しておきます。
ありがとうございました。