問題タブ [signtool]
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.
openssl - osslsigncode によるコード署名 - 発行元不明
特定の NSIS ベースのバイナリのコンパイルと署名を自動化しようとしたときに、少し奇妙な動作に遭遇しました。つまり、makensis
実行wine
可能ファイルをコンパイルするために実行され、その後osslsigncode
バイナリに署名するために使用されます。
Executable は Windows システムで動作するため、問題なくビルドされているようですが、署名に問題があります (適切な言葉がない)。コード署名証明書は PKCS#12 形式であるため、使用するコマンドは次のとおり です。
osslsigncode sign -pkcs12 <pkcs12-file> -pass <pkcs12-password> \
-n "Your Application" -i http://www.yourwebsite.com/ \
-in yourapp.exe -out yourapp-signed.exe
osslsigncode から "Succeeded" メッセージが表示されますが、署名が正常に行われたかのように見えますが、バイナリが Windows (この場合は Win 7) で実行されている場合、UAC は次のように述べています。
発売元:不明
奇妙なことに、元のファイルから抽出した証明書を開いてその.p12
情報を表示すると、Windows は発行者とデジタル署名を認識できました。
アドバイスをいただければ幸いです。
EDIT 1
osslsigncode 使用バージョン: 1.5.2 および 1.7.1
EDIT 2
比較のために、で署名してみましたがSignTool
、どうやら問題なく動作するようです。これは cert + osslsigncode
issue のように見えますが、正確にはわかりません。
また、まったく同じEXEを別の証明書で試しosslsigncode
てみましたが、さらに興味深いことに、うまくいきました...(2つの証明書の証明書パスが異なることに気付きました)。
いくつかの証明書の詳細:
1)非稼働証明書
バージョン: V3
公開鍵: RSA 2048 ビット
署名ハッシュ アルゴリズム: sha1
署名アルゴリズム: sha1RSA
証明書パス: USERTrust -> Comodo Code Signing CA 2 -> NonWorkingCert
2)有効な証明書
バージョン: V3
公開鍵: RSA 2048 ビット
署名ハッシュ アルゴリズム: sha1
署名アルゴリズム: sha1RSA
証明書パス: USERTrust -> UTN-UserFirst-Object -> Comodo Code Signing CA 2 -> WorkingCert
pfx - pvk2pfx では、空の秘密鍵パスワードを使用して pfx ファイルを作成できません
次のように、openssl を使用して証明書要求と秘密鍵を作成しました。
CSR を送信し、検証後、spc ファイルを取得しました。ここで、signtool を使用してコードに署名したいと考えています。どうやら、spc と秘密鍵を組み合わせた pfx ファイルを生成する必要があるので、
このプログラムはパスワードを要求しますが、秘密鍵にパスワードを設定することはありません。Enter キーを押しただけです。ダイアログでエンターを押そうとすると、
他のテキストを試すと、
また、signtool とウィザードを使用してみました。これは、明らかに spc と pvk を分離して受け入れます。秘密鍵を指定すると (ディスクから、CSP: Microsoft の強力な暗号化プロバイダー、プロバイダーの種類は RSA Full)、次のようになります。
なにか提案を?
c# - SignTool エラー --> アプリケーションのパッケージを作成できず、このアプリしか作成できません
これは、アプリ パッケージを作成しようとしたときに発生するエラーです。
visual-studio - ClickOnce マニフェストの署名に SHA256RSA を使用する不明な発行元
自己署名 CA 証明書を作成し、現在のユーザーの信頼されたルート証明機関の証明書ストアに配置しました。次に、以下を使用してソフトウェア発行者証明書を作成しました。
...そして、結果のファイルを次のようにpfxファイルにマージしました:
この pfx ファイルを使用して、Visual Studio (2013) で単純なコンソール アプリケーションの ClickOnce マニフェストに署名しましたが、すべて問題ありませんでした。ただし、結果の Setup.exe をテストすると、[アプリケーションのインストール - セキュリティの警告] ダイアログで発行元が不明であることが報告されていることに気付きました。
この MSDN ガイドに従って、-a sha256
フラグを除外することで期待どおりに機能するようになり、次のようになりました。
わかりません。SPCを指定すると、発行元が「不明」になるのはなぜですか-a sha256
(そして、はるかに怒りっぽいダイアログ、黄色の盾など)。
編集:実際には、さらに少し奇妙になります。に変更しようとしましたが-a sha512
、それも機能します:
hash - signtool.exeでexeファイルにハッシュを埋め込む方法
signtool.exe を使用して exe ファイルに署名しています。exeの署名付きハッシュ(opensslを使用して生成された署名付きハッシュ)とともに.pfx証明書を使用してexeファイルを埋め込もうとしています。証明書のみで署名できます。ただし、署名付きハッシュもexeに埋め込む必要があります。おそらく signtool.exe sign /asが役立つ可能性があります。/asオプションは引数を必要としないため、そこにハッシュを渡すことができません。
誰かが私のexeに証明書とハッシュで署名するのを手伝ってくれませんか。
ありがとう、
continuous-integration - バイナリにデジタル署名するように CI サーバーを安全に構成するにはどうすればよいですか?
証明書ファイルで実行する方法を説明しているサイトは多数あります。要約すると、次signtool.exe
のようになります。.pfx
ほとんどの CI プロセスと同様に、すべてを実行する継続的インテグレーション CI プロセスのセットアップ (TeamCity を使用) があります。現在、同一の VM を実行している 3 つのビルド エージェントがあり、それらのどれでもこのプロセスを実行できます。
安全でない実装
今日これを達成するために、セキュリティに関する限り、いくつかの悪いこと (TM) を行います。.pfx ファイルはソース管理にあり、そのパスワードはビルド スクリプト (ソース管理にもあります) にあります。これは、ソース コード リポジトリにアクセスできるすべての開発者が、pfx ファイルを取得して、好きなように悪意のあることを実行できることを意味します。(私たちは比較的小さな開発ショップであり、誰もがアクセスできることを信頼していますが、明らかにこれはまだ良くありません)。
究極の安全な実装
これを「正しく」行うことについて私が見つけることができるのは、次のことだけです。
- pfx とパスワードを安全な媒体 (指でロックを解除できる暗号化された USB ドライブなど) に保管し、おそらく一緒に保管しないでください。
- 署名ファイルへのアクセス権を持つ人を数人だけ指定する
- このコード署名セレモニーのために持ち出す必要があるまで、ロックアップされた保管庫に保管されている、接続されていない専用マシンでのみ最終ビルドに署名してください。
これのセキュリティのメリットはわかりますが..非常に重いプロセスであり、時間の面で費用がかかります(このプロセスを実行し、証明書のバックアップを安全に保持し、コード署名マシンが動作状態であることを確認するなど) )。
手順をスキップして、個人のシステムに保存されている証明書を使用してファイルに手動で署名するだけの人もいると思いますが、それでも素晴らしいことではありません。
また、インストーラー (ビルド サーバーによってビルドされる) 内で使用される署名ファイルとも互換性がありません。これは、管理者アクセスを取得するための UAC プロンプトを持つ .exe がインストールされている場合に重要です。
中盤?
私は、それが私の会社であることを証明することよりも、恐ろしい「信頼できないアプリケーション」UAC プロンプトをユーザーに提示しないことにはるかに関心があります。同時に、すべての開発者 (および QA と高度な技術サポート) がアクセスできるソース コード リポジトリに秘密キーとパスワードを格納することは、明らかに適切なセキュリティ プラクティスではありません。
私が望むのは、CI サーバーが現在のようにビルド プロセス中に署名することですが、パスワード (または証明書の秘密鍵部分) がなくても、ソース コード リポジトリにアクセスできるすべての人がアクセスできるようにすることです。
パスワードをビルドから保護したり、何らかの方法で保護したりする方法はありますか? signtool に証明書ストアを使用するように指示する必要がありますか (また、3 つのビルド エージェントとビルドを非対話型ユーザー アカウントとして実行する場合)。他の何か?
windows - SHA-2 を使用した相互署名証明書を使用して、signtool で署名および検証した後の Windows ドライバーのインストールの失敗
適切に署名されているように見える 2 つのドライバー ファイルがあります。
しかし、それらをインストールしようとすると、dredded エラーが発生します。
このファイルのデジタル署名を確認できません。最近のハードウェアまたはソフトウェアの変更により、正しく署名されていないか破損しているファイルがインストールされた可能性があります。または、不明なソースからの悪意のあるソフトウェアである可能性があります。
問題のファイルと関連する証明書を投稿しました。次のコマンドを使用してファイルを作成します。
私の証明書は署名アルゴリズムを使用しています: sha256WithRSAEncryption
次に何を試せばいいですか?