21

私の会社では、サーバー用の Java アプリケーションを作成し、ローカル アプリケーションを起動するための JNLP ファイルを配布しています。OSX 10.8.4 以降、Gatekeeper を満足させるために、開発者 ID で JNLP ファイルに署名する必要があります (実際には、リリース ノートの一番下にあります)。

問題は、これをどのように達成するかです。知る限り、アプリに署名できます (開発者 ID で署名された Java アプリがいくつかあります) - しかし、JNLP - ファイルは単なるファイルです。

次: 生成された JNLP ファイルでこれを行う方法。プロパティ、ベース URL など、サーバーから取得したものを変更する必要があります。

AFAIK Javaには、 JNLPファイルがそれぞれのJARファイル(メインクラスを保持するファイル)を介して署名されていると言う特定のメカニズムがありますが、Jarファイルは別の証明書で署名されており、ゲートキーパーも満足しません。

ツールなどに署名する方法に関する参考文献を 1 つ見つけましたが、動的ファイルのシナリオには適用されません。

答えとして望まないこと: 右クリックして開くと、ゲートキーパーをオーバーライドしたり、システムまたは Java の設定を変更したりできます。これはオプションではありません。

[更新] OSX 10.9.5 以降、OSX 10.9+ を使用して署名する必要があり、有効なバージョン 2 署名も必要です。これはどのように行われますか?

4

5 に答える 5

3

xipApple テクニカル サポートの電子メール スレッドから、ツールを使用して HFS 拡張属性への依存を回避することが公式の言葉のようcodesignです。

コード署名の代わりに、xip (「チップ」と発音) を使用して、JNLP ファイルの署名付きアーカイブを作成します。--sign オプションの引数として、開発者 ID アプリケーション ID ではなく、開発者 ID インストーラー ID を指定します。

xip アーカイブは基本的に署名付きの zip アーカイブであるため、zip アーカイブと同じ方法でインターネット経由で提供できます。クライアント Mac で自動的にアーカイブ解除されます。

https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/xip.1.html

私の実験によると、このxipツールは常に、解凍時にフォルダーに含まれる jnlp を含むアーカイブを生成します。

于 2013-06-20T19:45:03.650 に答える
2

議論を要約するだけです。現在、これを回避する方法に関する既存のソリューションはありません。

これは、エンド ユーザーが JNLP を介してアプリケーションを簡単に起動できないことを意味します。基本的に、ゲートキーパーをオーバーライドするには、ユーザーに右クリックして開くように指示する必要があります。

もう 1 つの解決策は、署名済みの Mac アプリケーションを作成し、ユーザーにディスク イメージ経由でインストールさせることです。

于 2013-07-17T08:16:54.203 に答える
0

「myapp」などと呼ばれる単純な実行可能シェル スクリプトを、.dmg次のような署名付きファイルにバンドルすることはできますか。

javaws http://path/to/my/app.jnlp

そうすれ.jnlpば、 を変更せずに好きなように変更できます.dmg。私は Apple Developer ID を持っていないので、今は自分で試すことができません。

于 2016-11-03T15:16:34.427 に答える