オープンソースプログラムWPCleanerを開発しました。これはJava Web Startを通じて配布されています。現在のバージョンは http://site4145.mutu.sivit.org/WikiCleanerで入手できます。 /WikiCleaner.jnlp
最近のJavaの更新により、JavaアプリケーションからJava Web Startを使用してアプリケーションにいくつかの権限を付与する必要がある場合)のデプロイがますます困難になっています(設定の書き込み、他のWebサイトへのアクセス、...)
私のアプリケーションは自己署名されていましたが、以前は問題ありませんでしたが、新しいアップデートでは、ユーザーがアプリケーションを実行するたびに、必要に応じて一度だけでなくすべてを受け入れる必要があります。そのため、アプリケーションの署名には信頼できる証明書を使用することにしました。
私はCertumから1つ取得しました(どうやら、オープンソース開発者は無料です)。次のディスカッションに従ってください。 オープンソースプロジェクトのコード署名証明書?
この証明書で署名された新しいjarファイルを生成しました(jarファイルは http://site4145.mutu.sivit.org/WikiCleaner/WikipediaCleanerTest.jar で入手できます)が、まだ問題があります。 JWSを介してアプリケーションを起動すると、Javaは引き続きアプリケーションを信頼できない警告ウィンドウを表示します。エディタは依然としてUNKNOWNとして表示されますが、メッセージ、Centrumからの新しい証明書が使用されています。
誰かが私が間違っていることについてアイデアを持っていますか?信頼できるCA(CentrumはJava cacerts)にあるようです)からの証明書があれば、ユーザーは一度にすべての証明書を受け入れることができると思いました。
ありがとう
PS:jarsigner -verify
を実行すると、「このjarには、証明書チェーンが検証されていないエントリが含まれています」という警告が表示されます。
私は最終的にこの手順に従ってそれをやることができたと思います:
私にとってはうまくいくようですが、他のユーザーからのフィードバックが彼らにとってもうまくいくことを確認するのを待っています。
編集:もう一度Chromeから証明書をエクスポートしようとしましたが、エクスポートに証明書チェーンを含めるオプションがあることがわかりました。これを行う場合、後でKeyTool GUIを使用する必要すらありません。この新しいp12で署名されたテストバージョンを再デプロイしました。
[Update 2017]Certumからのオープンソースコード署名は、暗号化フラッシュカードを秘密鍵として使用するため、証明書のアクティブ化とインストールのためにプラグインする必要があります。コード署名と同様に。キーの価格は125ドル(+送料)で、1年間の証明書だけで40ドルです。あなたは割引を求めることができます。
次に、jarファイルに最初から署名するための次の手順を示します。
指示
英語での指示は見つけにくく、最新ではありません。次の手順は、これら2つのドキュメントに基づいています。
証明書を作成、アクティブ化、インストールします:
ヒント:CryptoAgent Java Web Startアプリケーションは、JDK(JREではなく)<9(したがって、JDK 7または8)。
ファイル「bundle.pem」を取得します
このファイルは、アプリケーションに署名するときに有効な証明書チェーンを取得するために必須です(ポーランド語の手順のパート7.1.2を参照)。
基本的に、プレーンテキスト形式のファイルに1)証明書を連結し、2)Certumコード署名CA SHA2公開鍵を連結して構成されます。
jarsignerでjarファイルに署名します
keytool -list -v -keystore NONE -storetype PKCS11 -providerClass Sun.security.pkcs11.SunPKCS11 -providerArg "provider.cfg" -storepass "[your_pin]"
jarsigner -keystore NONE -certchain "bundle.pem" -tsa "http://time.certum.pl" -storetype PKCS11 -providerClass Sun.security.pkcs11.SunPKCS11 -providerArg "provider.cfg" -storepass "[your_pin]" "[your_code].jar" "[your_alias]"
個人的には、Antスクリプトを使用してアプリケーションのjarファイルに署名しています。 ANTプロジェクトの signjar task を参照してください。
他のユーザーからのフィードバックが他のユーザーにも機能することを確認するのを待っています。
ファイルのJaNeLAに基づく-有効なJNLP。最も重要なWikiCleanerTest ..の既知の発行元.
したがって、「発行者を識別するためにここで機能するようだ」という結果が1つあります。すばらしい仕事で、プロセスの説明に感謝します。
以前に見たものよりもはるかにうまく機能します。 :P
s 292828 Sun Oct 20 17:57:58 EST 2013 META-INF/MANIFEST.MF
292645 Sun Oct 20 17:57:58 EST 2013 META-INF/WPCLEANE.SF
2017 Sun Oct 20 17:57:58 EST 2013 META-INF/WPCLEANE.RSA
0 Sun Oct 20 17:57:52 EST 2013 META-INF/
0 Wed Feb 11 15:04:50 EST 2009 META-INF/maven/
..
0 Sun Oct 20 17:57:32 EST 2013 org/xnap/commons/i18n/
sm 2837 Thu Sep 09 16:00:54 EST 2004 META-INF/info.xml
..
sm 214 Wed Feb 11 00:57:02 EST 2009 org/xnap/commons/i18n/LocaleChangeListener.class
s = signature was verified
m = entry is listed in manifest
k = at least one certificate was found in keystore
i = at least one certificate was found in identity scope
jar verified.
Warning:
This jar contains entries whose certificate chain is not validated.
Re-run with the -verbose and -certs options for more details.
私は警告を理解します:
このjarには、証明書チェーンが検証されていないエントリが含まれています。
..無視できます。
JaNeLA は1つのエラーを示します。
JaNeLA Report - version 11.05.17
Report for http://site4145.mutu.sivit.org/WikiCleaner/WikiCleaner.jnlp
cvc-complex-type.2.4.a: Invalid content was found starting with element 'homepage'. One of '{description, icon, offline-allowed, shortcut, association, related-content}' is expected.
cvc-complex-type.2.4.a: Invalid content was found starting with element 'homepage'. One of '{description, icon, offline-allowed, shortcut, association, related-content}' is expected.
XML encoding not known, but declared as utf-8
Codebase + href 'http://site4145.mutu.sivit.org/WikiCleaner.jnlp' is not equal to actual location of 'http://site4145.mutu.sivit.org/WikiCleaner/WikiCleaner.jnlp'.
Desktop icons were subject to bug nnnn in earlier J2SE versions
Optimize this application for off-line use by adding the <offline-allowed /> flag.
'short' description is longer than 'default' description.
Downloads can be optimized by specifying a resource size for 'WikipediaCleaner.jar'.
The resource download at WikipediaCleaner.jar can be optimized by removing the (default) value of download='eager'.
Lazy downloads might not work as expected for WikipediaCleaner.jar unless the download 'part' is specified.
Resource type png of resource commons-nuvola-web-broom.png is not one of the allowable types of gif, jpg, jpeg.
Downloads can be optimized by specifying a resource size for 'commons-nuvola-web-broom.png'.
Icon loading & use can be optimized by specifying the width and height for commons-nuvola-web-broom.png
検証済みのJNLP、および以下のTweakを使用した修正バージョンを参照してください。
しかし、ここに本当の悪いニュースがあります:
証明書の詳細は次のとおりです。
Nicolas Vervelle(ニコラスヴェルベル)
ここに私にはわからない奇妙な警告があります。
アプリ。は1.5.0+を要求しているため、バージョン1.7+は問題なく受け入れる必要があります。
1.6を要求していると主張しています(おそらく、1.5ランタイムがインストールされていないためです)。私が考えられる唯一のことは、警告をトリガーすることは、不要なマイクロバージョンを含めることです。
以下は、上記で検証されたJNLPです。
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.5+" codebase="http://site4145.mutu.sivit.org/WikiCleaner" href="WikiCleaner.jnlp">
<information>
<title>WPCleaner</title>
<vendor>User:NicoV</vendor>
<description>WPCleaner</description>
<description kind="short">A tool for Wikipedia maintenance</description>
<homepage href="http://en.wikipedia.org/wiki/WP:WPCleaner"/>
<icon href="commons-nuvola-web-broom.png"/>
<shortcut>
<desktop/>
</shortcut>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.5.0+" Java-vm-args="-Xmx512M"/>
<jar href="WikipediaCleaner.jar" download="eager" main="true"/>
</resources>
<application-desc main-class="org.wikipediacleaner.WikipediaCleaner"/>
</jnlp>
推奨される代替品を以下に示します。 JaNeLA(無視できるバー警告)によると有効です。また、最小バージョン属性への別のTweakも含まれています。
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.5+" codebase="http://site4145.mutu.sivit.org/WikiCleaner" href="WikiCleaner.jnlp">
<information>
<title>WPCleaner</title>
<vendor>User:NicoV</vendor>
<!-- Should be here.. -->
<homepage href="http://en.wikipedia.org/wiki/WP:WPCleaner"/>
<description>WPCleaner</description>
<description kind="short">A tool for Wikipedia maintenance</description>
<icon href="commons-nuvola-web-broom.png"/>
<shortcut>
<desktop/>
</shortcut>
</information>
<security>
<all-permissions/>
</security>
<resources>
<!-- the micro-version request might be triggering the
Out-Of-Date Java version warning -->
<j2se version="1.5+" Java-vm-args="-Xmx512M"/>
<jar href="WikipediaCleaner.jar" download="eager" main="true"/>
</resources>
<application-desc main-class="org.wikipediacleaner.WikipediaCleaner"/>
</jnlp>
Linuxでは、次の手順でうまくいきました。これは、Eric Davidの回答に基づいています。
証明書を取得
「Certum Certification」のWebサイトの「OpenSource Code Signing」セクションにアクセスしてください。証明書を購入し、作成手順に従います。
コード署名用の公開鍵を取得
Certumコード署名CAの公開キー 、おそらくCA SHA2キー cscasha2.cer を取得します。
証明書をpkcs12形式に変換します
pkcs12形式からjks形式に変換します
Pkcs12ファイルで使用されているエイリアスを見つけます。これは、「unizeto Technologies s.a. id von open source developer、YOUR NAME」に似ています。
keytool -list -v -storetype pkcs12 -keystore mycert.p12 > out.txt
grep Aliasname out.txt
次に、pkcs12ファイルをJavaのjks形式に変換します。このステップは省略できますが、一度完了すると便利です。
keytool -importkeystore -srckeystore mycert.p12 -srcstoretype pkcs12 -srcalias "ALIASNAME" -destkeystore mycert.jks -deststoretype jks -deststorepass PASSWORD -destalias SHORTALIAS
jarファイルに署名します
Webstartユーザーへの警告を回避するには、jarマニフェストファイルに次の属性を含める必要があります。
次のコマンドを使用して、jarファイルに署名します。
jarsigner -keystore mycert.jks -tsa http://time.certum.pl FILENAME.jar SHORTALIAS
私はこれで私の今日の同じ問題を解決しました:
Manifest-Version: 1.0
Trusted-Library: true
Application-Library-Allowable-Codebase: *
Trusted-Only: false
Application-Name: My app
Permissions: all-permissions
Created-By: 1.6.0_16 (Sun Microsystems Inc.)
Caller-Allowable-Codebase: *
Codebase: *
前述のように、 ここ 、不明な発行者の警告を削除するには、jarの署名に使用した証明書をJavaコントロールパネルの署名者jarに追加します:設定Java->セキュリティ->証明書の管理->署名者JARオプション->インポート。