2012-03-02 15 views
5

現在、LinuxマシンでNSISを使用しているプログラムのインストーラを生成しています。 NSISバイナリはUbuntu向けにコンパイルされており、.nsiスクリプトを使用しても問題はありません。ただし、結果のファイルsetup.exeは署名されていません。その結果、ほとんどの一般的なWebブラウザを介してインストーラをダウンロードしたユーザー、および実行時にWindows自体からの警告が表示されるという恐ろしい警告が表示されます。LinuxマシンでNSISインストーラをインストールする

私はこれらの警告を避けたいと思っています。何かが見つからない限り、Windowsツールを使用して生成されたsetup.exeファイルに署名する必要があります。 Windows以外のマシンでこれを行う方法はありますか?

残念ながら、インストーラは一意です(お客様の要求によって異なるファイルがバンドルされ、固有のIDが含まれています)ので、Windowsマシンでインストーラに署名してアップロードすることはできません。

答えて

1

私はワインを使わずに数週間前にそれをしなければなりませんでした。私がしたことは、pfxファイルをウィンドウにインポートし、「可能であれば証明書パスにすべての証明書を含める」オプションでエクスポートすることでした。私はthis pageの指示に従った。

あなたはすべての本命(SPCおよびPVKファイル)を持った後、次のコマンドを使用する必要があります。

sudo apt-get install mono-devel 
+0

OpenSSLは、 '-pvk-strong'は未知のオプションであると報告しています。私はそれを省略しようとしましたが、 'signcode'を実行するとエラーが発生しました。パスフレーズの入力を求められます。私はこれがWindowsから証明書をエクスポートするときに使用したものと同じであると仮定しましたが、これは機能しません。私はどこに迷いますか? –

+0

OpenSSLの最新バージョンをダウンロードしてビルドすると、そのエラーは解消されました。なぜUbuntuにはそれがないのですか? :( –

+0

@Tom G:物事を安定させようとしているからです.LTSリリースチャンネルのほうがずっとです。Debianはさらに慎重です。 – 0xC0000022L

0

Windows用の署名ファイルは、Microsoft Authenticode署名を使用します。実行可能ファイルとDLLに署名するツールがSDKにあります(signtool.exe)。ワインを使ってそれを実行できるかもしれません。

Windows API呼び出しでファイルに署名することもできます。これらの関数はWineでも実装されていますが、AuthenticodeはMicrosoftだけで使用され、実装されているため、疑いがあります。

しかし、このツールは基本的に証明書と署名付きタイムスタンプをファイルの末尾に追加します。 Linuxにも適応が存在する可能性があります。

ここでは、signcodeを使用して作業している人にlinkがあります。

6

あなたの最良の選択はおそらく:osslsigncodeの使用です。私のために簡単に構築されています(OpenSSLヘッダーを用意してください)。ただし、カーネルモードの署名ポリシーは難しいかもしれません(親証明書をルートに埋め込む)ので、最後にWINEに依頼する必要があります。

+1

osslsigncodeが私の仕事:

signcode -spc [spc file] -v [pvk file] -a sha1 -$ commercial -t http://timestamp.verisign.com/scripts/timstamp.dll -tr 10 [exe file to sign] 

を私はモノ-devのパックをインストールする必要がありました。今、私はpfxを使ってexesに署名することができます、ありがとう。 –

関連する問題