2016-05-20 5 views
0

私のジレンマを説明しましょう。私は、ユーザーにMSIインストーラを保存させ、後でそれをリモートコンピュータで実行させることで、ソフトウェアのより小さいモジュールをインストールするオプションを持ったメインソフトウェアを持っています。 MSIインストーラは、もともとデジタル私のコード署名証明書によって署名されていることをデジタル署名に影響を与えないように、署名付き実行可能ファイル/ MSIファイルのどの部分を変更できますか?

私が持っている問題は、メインアプリから動的に生成することができるMSIである最小のデータを渡す方法ですか?ユーザーがUIを使用して選択した登録名やソフトウェア関連の最小限のパラメータなど。

まず私は、アプリから動的にMSIの内容を変更すると思ったが、それは、デジタル署名を破ります。 (私は明らかにそのアプリケーションにデジタル証明書のプライベートキーを公開するつもりはないので、私はそれを再署名することはできません)。

この時点で、私は興味があります。 MSIファイルはデジタル署名の影響を受けませんか?私はファイル名は影響を受けていないことを知っているが、それは私のデータを追加するために多くの動揺の部屋を与えることはありません。

答えて

1

私はそれが巨大なセキュリティ上の問題になりますので、あなたが署名したファイルを回避することはできません確信しています。 MSIを構築するためにどのようなツールを使用していますか?それもこれに影響します。

これは、インストール時に行うことができるものであれば動作するはずの選択肢のカップルがありますが、しかし、それはあなたがMSIファイルでそれを持っていると思います正確にどのようなデータがあり、どこで明確ではありません。

  1. カスタムアクションがデータを収集し、インストール時に既存のテーブル(例えばレジストリ)を取り込むことができ、メモリ内のMSIデータベースは、あなたはそれが製品をインストールする際に必要な変更を行うということで、結果。

  2. 通常、トランスフォームファイル(.mstファイル)を作成し、TRANSFORMS = [mstファイル]を使用してMSIをインストールしますが、mstファイルに署名されたMSIをインストールする必要がありますそのことはよくわからない。これは簡単なテストですが、Orcaを使用してPropertyテーブル内の何かを変更するmstファイルを生成し、TRANSFORMS = .....を指定してMSIをインストールし、符号なし変換を許可しないかどうかを確認してください。

+0

私はWiXを使用しています... – c00000fd

0

それはまさに、署名の目的だからあなたは、デジタル署名を壊すことなく、MSI内部の1バイトを変更することはできません - コンテンツが変更されていないことを保証します。 MSIに固有のものではなく、実際に署名されたファイルであることに注意してください。アイデアとして

、あなたが顧客にあなたが秘密鍵を「与える」したくない場合は、サーバー上のMSIを生成(およびサーバ上の鍵、秘密鍵を維持)を考慮することができます多分?

+0

それはそれを同様に公開します。このサーバーサイド署名を提供すると、誰かがそれに接続してファイルに署名するだけです。プライベートキーを公開するのと同じことです – c00000fd

+0

あなたは認証を使うことができます。つまり、サービスを使用する前にユーザーを特定する必要があります。 – Nikolay

+0

いいえ、それはあまりにも複雑です。この小さな機能をインストールするには、サーバーに登録してからログインする必要があります。 – c00000fd

関連する問題