問題タブ [authenticode]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
certificate - コード署名(Microsoft Authenticode)
私は、必ずしもスーパーコンピューターに精通しているとは限らない多くの人々によって使用されるプログラムを持っています。実行可能ファイルに、自分が署名したと言っているのは、未知の作成者からのものであると言わせるのではなく、確認したいと思います。
私の知る限り、これはMicrosoftAuthenticodeで実行できます。これを行うには証明書が必要であることを理解しており、リーズナブルな価格で証明書を探していました。MicrosoftAuthenticodeCertificatesのページに出くわしました。
GlobalSignには必要なものがすべて揃っているようです。彼らからの証明書の経験は何ですか、それともより良い会社がありますか?初めてこれを行う人のための良いチュートリアルはありますか?
signing - 非 PE ファイルに署名するための一般的なアプローチ
Windows は、PE および一部の種類のテキスト ファイル (.vbs、.ps、および .wsf) の署名を本質的に検出および検証できることを知っています。ただし、署名を直接サポートしていないファイル (.ISO ファイルや .zip ファイルなど) に何らかの方法で署名を添付または関連付ける方法があるかどうかに興味があります。
バイナリと .inf ファイルが混在するドライバー パッケージは、署名された .cat ファイルを使用して構成要素を間接的に署名できるようにしますが、「signtool.exe verify」を使用してファイルを検証する必要があり、このアプローチではさまざまな結果が得られます。 .
ダウンロードした一連のファイルが転送中または第三者によって破損されていないことをユーザーが簡単に確認できるようにするために使用できる、署名付きのマニフェスト ファイルを探していると思います。 MD5 を手動で実行し、結果をテキスト ファイルに保存されている値と比較します (これも処理されている可能性があります)。
clickonce - VSTO 展開に署名するにはどうすればよいですか?
クライアントはコード署名証明書を購入し、.pvk
ファイルとファイルが付属していました.spc
。私は.pvk
ファイルに精通していますが、Visual Studio はファイルを認識しません.spc
。
ファイルを ClickOnce 証明書として読み込もうとすると、.spc
「選択したファイルには秘密キーが含まれていません。秘密キーを含む証明書を選択する必要があります。」というメッセージ ボックスが表示されます。
クライアントは間違ったものを購入しましたか、それとも私は適切な場所にいませんでしたか?
asp.net - 署名付き証明書を使用しているときに ActiveX の「不明な発行元」エラーが発生するのはなぜですか?
オンラインで見つけたこのテーマに関するいくつかの記事を調べたにもかかわらず、単純なActiveX DLL を動作させるために何日も苦労してきました。
私はこれに慣れておらず、この件に関する記事のほとんどが古くなっているため、いくつかのコードが間違っていると思われます。Visual Studio 2008を使用しており、デジタル署名にはWindows SDK v7.1 を使用しています。
私がやろうとしているのは、クライアントの machineName を環境クラスから Web ページに戻す (そして最終的には Web サーバーに戻す) ことです。
これは私のC#クラスです:
これが私のアセンブリです:
これが私の Web サイトのマスター ページのオブジェクト タグとスクリプトです。**注: エラーが表示されます
Microsoft JScript ランタイム エラー: オートメーション サーバーはオブジェクトを作成できません
「var」実行時**:
次に、次のように .inf ファイルを手動で作成しました。
ただし、ファイルをビルドすると、次のようにファイル出力.cab
も得られます (同じファイルにaと aファイルの両方が存在することを懸念しています。それは正しいですか?また、問題が発生するのでしょうか?どうすればよいかわかりませんファイルをビルドしないように Visual Studio に指示します。.OSD
.cab
.inf
.OSD
.cab
.OSD
とにかく、これはすべての詳細をまとめようとする悪夢でした. これを解決するための助けにとても感謝しています。
わかりました。The Code Projectの記事A Complete Scriptable ActiveX Web Control Tutorial Using ATL.cab
は、ファイルに署名するためのガイドとして使用したものです。「cab ファイルへの署名」というタイトルのセクションを参照してください。
ここに私が使用したコマンドがあります。CABARC の代わりに Visual Studio を使用して cab ファイルを作成したことに注意してください。また、テスト証明書のみを使用していることにも注意してください。
certmgr
「ルート エージェンシー」証明書を信頼されたルート証明書にエクスポートおよびインポートするために使用します。
DLL を Windows SDK フォルダーにコピーして署名し、それをcab
ファイルにコピーしてから、SDK ファイルにコピーしてファイルに署名したことに注意してくださいcab
。cab
最後に、ファイルを Web サイト プロジェクトにコピーしました。
注:最初の回答の最後にあるコメントを参照してください。Comodoから署名付き証明書を購入し、それをインストールすると、証明書のステータスが「OK」であっても「不明な発行元」エラーが発生します。DLL ファイルと CAB ファイルの両方が署名されています。
私の問題は、コントロールをスクリプトに対して安全であるとマークする必要があることだと思います。最近の記事、C# を使用して .NET で ActiveX コントロールを作成するを見つけました。これは非常に役に立ちます。
security - ビルド サーバー上のセキュアな Authenticode キー
職場で Authenticode 署名を設定する最善の方法を見つけようとしています。セキュリティへの影響は私にストレスを与えています。
私が最初に考えたのは、キーを管理する人がキーをビルド サーバーにインストールし、ビルド アカウントだけがアクセスできるように保護する必要があるということです。
これはかなり安全に見えますが、実際にはそうではありません。はい、この時点で証明書を盗むことはできませんが、ビルドを作成できる場合は、ビルド アカウントを取得して任意のバイナリに署名できます。
プロセスに精通している誰かが私にいくつかの指針を教えてくれますか?
msbuild - msbuild(またはコマンドライン)を使用して実行可能ファイルの「ファイルの説明」を変更するにはどうすればよいですか?
実行可能ファイルを生成しているサードパーティのアプリがありますが、実行可能ファイルの「ファイルの説明」と「製品名」の詳細に独自の名前が付けられています。
これらをauthenticodeで署名すると、会社の証明書で署名されていても、ユーザープロンプトに自分の名前ではなくサードパーティのアプリ名が表示されます。
いくつかのmsbuildタスクを使用して、コマンドラインからこれを変更する方法はありますか?コンパイル前にこれを行うタスクがあることは知っていますが、この場合、コンパイルは行っておらず、完成した実行可能ファイルだけがあります。
windows - 証明書の詳細を表示するまで、デジタル署名された実行可能ファイルが署名されていないものとして扱われるのはなぜですか
デジタル署名された実行可能ファイルを実行すると、非常に奇妙な結果が得られます。
実行可能ファイルは、適切なレベル 2 コード署名証明書 (自己生成ではない) を使用して、signtool.exe を使用して署名されました。
Windows 7 マシンでのテストで、署名済みの実行可能ファイルを起動すると、Windows の警告ダイアログが表示され、Publisher Unknown (つまり、署名されていません) というメッセージが表示されます。
ただし、実行可能ファイルをキャンセルして右クリックし、[プロパティ] -> [デジタル署名] に移動すると、署名リストに署名付き証明書が表示されます。これをクリックして [詳細] を選択すると、署名の詳細が表示されます。 「デジタル署名はOKです」と表示されます。
その時点で、実行可能ファイルを起動すると、突然すべてのウィンドウが実行可能ファイルが署名されていることを正しく認識し、正しい「検証済み発行元」を報告します。
実行可能ファイルのプロパティ ダイアログから実際の証明書の詳細を表示するまで、Windows が証明書をオンラインでチェックしていなかったようです (実行可能ファイルを起動した後の単なる遅延ではなく、どれだけ待つかは関係ありません)。または何回起動しても、ファイルのプロパティ/デジタル署名に入るまで、署名されていないものとして扱われます)。
これは、私がテストに使用する一般的な Windows 7 のインストールです。まったく変更も調整もされていません。
この動作は、Windows でのコード署名の主な目的を無効にしているようです。ユーザーが右クリックのプロパティに移動して証明書を探し回らない限り、実行可能ファイルが署名されていないものとして扱われることはあり得ません。
足りないものはありますか?実行可能ファイルを、Windows が実行時に証明書を積極的にチェックする必要があるものとしてマークする方法はありますか?
.net - .NET:強力なネーミングとAuthenticode
たとえば、ここで.NETの厳密な名前について読んだことがあるので、次の質問があります。
すべてのEXE、DLL、およびMSIファイルに署名するAuthenticodeコード署名証明書があります。その利点は、MSIが信頼できるソースからのものであることをWindowsが認識していることと、必要に応じて各ファイルの信頼性を検証できることです。
現在、 .NETの厳密な名前は使用していません。ファイルに厳密な名前を付けるということは、本質的に、自己署名証明書でデジタル署名されていることを意味することを読みました。これについての私の意見は、信頼できる認証局によって署名されたAuthenticode証明書は、ルート証明書がないために誰も真正性を確認できない自己署名証明書よりもはるかに価値があるということです(エンドユーザーに配布するつもりはありませんが、私たちは!?)。
質問: Authenticode署名がすでに使用されている場合、追加の厳密な名前付けアセンブリに価値はありますか?
c - 自動アップデータ用のAuthenticode署名が当社からのものであることを確認します
自動更新機能を実装していますが、ベストプラクティスを使用してこれを安全に行う方法についてアドバイスが必要です。ダウンロードしたファイルのAuthenticode署名を使用して、安全に実行できることを確認したいと思います(つまり、当社が作成したものであり、改ざんされていないことを確認します)。私の質問は質問#2008519と非常によく似ています。
結論としての質問:自動更新機能のAuthenticode署名をチェックするための最良で最も安全な方法は何ですか?証明書のどのフィールドをチェックする必要がありますか?要件は次のとおりです。(1)署名が有効であることを確認し、(2)署名であることを確認し、(3)証明書の有効期限が切れて新しい証明書を取得しても、古いクライアントは引き続き更新できます。
これが私の研究からのいくつかの背景情報/アイデアです:これは2つのステップに分けることができると私は信じています:
署名が有効であることを確認します。http://msdn.microsoft.com/en-us/library/aa382384(VS.85).aspxで概説されているように、これはWinVerifyTrustを使用して簡単にできるはずです-ここでは問題はないと思います。
署名が他の会社ではなく、当社に対応していることを確認してください。これは答えるのがより難しい質問のようです:
1つの可能性は、署名の文字列の一部をチェックすることです。MS KBの記事#323809のコードを介して取得できますが、この記事では、このタイプのアプリケーション(またはその他のアプリケーション)でチェックする必要のあるフィールドについては推奨していません。 質問#1072540は、証明書情報を取得する方法も示していますが、実際に確認するフィールドは推奨されていません。私の懸念は、文字列が最善のチェックではない可能性があることです。たとえば、別の人が同じ名前の証明書を取得できる場合はどうなりますか?または、将来的に文字列を変更する正当な理由がある場合はどうなりますか?
質問#2008519の人には、非常によく似た要件があります。彼の「TrustedByUs」関数の必要性は私のものと同じです。ただし、彼は公開鍵を比較してチェックを行います。これは短期的には機能しますが、自動更新機能では機能しないようです。これは、コード署名証明書が有効なのは最大2〜3年であるためです。したがって、将来、2年以内に新しい証明書を購入すると、公開鍵の変更により、古いクライアントはそれ以上更新できなくなります。
dll - DLL に署名する必要がありますか?
C++ Windows アプリがあります。インストーラーと実行可能ファイルに署名していますが、現在、DLL (zlib1.dll など) には署名していません。それらに署名することも大したことではありませんが、誰かがその利点を説明できますか? たとえば、すべての依存関係が署名されている場合、私のプログラムは AV やファイアウォール ソフトウェアとは異なるように見えますか? ユーザーには別の警告が表示されますか?