1 / 39

webstart-maven-plugin + 無償で正統 ? なコード署名 証明書を入手する方法

webstart-maven-plugin + 無償で正統 ? なコード署名 証明書を入手する方法. 久保 裕也 <hiroya@cuc.ac.jp>. 自己紹介 ____. なまえ: くぼひろや しごと: オープンソースプログラマ          兼 大学教員 JavaOneTokyo2005 Night for Java Tech 出場 IPA 未踏ソフト 2007 年 I 期採択者 採択テーマ:「 SQS2.0 の開発」. いいたいこと!. みんな、もっと、 デスクトップアプリを書こうよ!

cece
Télécharger la présentation

webstart-maven-plugin + 無償で正統 ? なコード署名 証明書を入手する方法

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. webstart-maven-plugin+無償で正統?なコード署名証明書を入手する方法webstart-maven-plugin+無償で正統?なコード署名証明書を入手する方法 久保 裕也 <hiroya@cuc.ac.jp>

  2. 自己紹介 ____ • なまえ: くぼひろや • しごと:オープンソースプログラマ         兼 大学教員 • JavaOneTokyo2005 Night for Java Tech出場 • IPA未踏ソフト2007年I期採択者 • 採択テーマ:「SQS2.0の開発」

  3. いいたいこと! • みんな、もっと、デスクトップアプリを書こうよ! • クライアント側へのアプリ配布には、JavaWebStartが最適。 • JavaWebStartでの開発には、Maven2が便利だよ!

  4. JavaWebStart、つかってますか?

  5. JavaWebStart とは? • ブラウザ上から、クリックひとつで、Javaアプリを起動させるしくみ。 • AIR, ClickOnce などと類似の技術 • オフラインでの起動も可能。 • オンラインなら最新バージョンへの更新も簡単。

  6. たとえばこんな感じ • http://plat.prof.cuc.ac.jp/~hiroya/sprite/piano.jnlp

  7. JavaWebStartアプリの開発・配置 • 「配布用ファイル群」を用意する • メタデータ(JNLPファイル)を書く • Jarファイルをパックする(Jarファイルに署名する) • 「配布用ファイル群」をWebサーバ上に配置する

  8. JavaWebStartのセキュリティ • デフォルトでは、SandBox内で動作 • 開発者が、システム資源を、JNLP API経由で獲得するようにプログラムを書けば、   ユーザが、システム資源を、逐次的・明示的に許可することで、ローカルファイルの読み書き等が可能に • 開発者/配布者が、すべてのJarにコード署名をし、ユーザが、初回起動時に許可をすれば、SandBox外で動作させることも可

  9. 「このセキュリティ証明書は、信頼できる団体によって発行されています」「このセキュリティ証明書は、信頼できる団体によって発行されています」

  10. 依存関係にあるjarファイルの数が、10個や20個になるくらいのものが、珍しくない。依存関係にあるjarファイルの数が、10個や20個になるくらいのものが、珍しくない。 net.sqs2:sqs-util org.mortbay.jetty:jetty org.mortbay.jetty:jetty-util org.mortbay.jetty:servlet-api-2.5 xalan:xalan xerces:xercesImpl velocity:velocity oro:oro batik:batik-awt-util com.lowagie:itext net.sf.ehcache:ehcache org.apache.poi:poi commons-collections:commons-collections commons-httpclient:commons-httpclient commons-logging:commons-logging commons-lang:commons-lang commons-codec:commons-codec commons-digester:commons-digester commons-beanutils:commons-beanutils commons-io:commons-io net.sourceforge.collections:collections-generic xnap-commons:xnap-commons gettext-commons:gettext-commons jfree:jfreechart jfree:jcommon ところで。ちょっと本気のJavaプロジェクトでは:

  11. というわけで、色々と面倒くさい! • 開発・設定・署名・配布などなど、多様な場面・ツール内で、 いろいろなjarファイルへの参照を、膨大な数で管理しなければならない! • 開発環境で、jarファイルを設定…… • JNLPファイルで、jarファイルを設定…… • antでコード署名をするためにbuild.xml内でjarファイルを設定…… …特に、コード署名が、面倒くさい!

  12. webstart-maven-plugin を、使おう! ここからは、ようやくMavenの話です。

  13. pom.xml 内で、webstart-maven-pluginを設定 <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>webstart-maven-plugin </artifactId>

  14. <configuration> <spec>1.0+</spec> <dependencies> <includes> <include>org.mortbay.jetty:jetty</include> <include>org.mortbay.jetty:jetty-util</include> <include>org.mortbay.jetty:servlet-api-2.5</include> <include>xalan:xalan</include> <include>xerces:xercesImpl</include> <include>batik:batik-awt-util</include> <include>org.apache.poi:poi</include> <include>commons-httpclient:commons-httpclient</include> <include>commons-logging:commons-logging</include> <include>commons-lang:commons-lang</include> <include>commons-codec:commons-codec</include> <include>commons-digester:commons-digester</include> <include>commons-beanutils:commons-beanutils</include> <include>commons-io:commons-io</include> .jnlpで必要なartifact名をひたすら列挙 これらのartifact群で、JWSアプリの構成を指定するよ。

  15. <jnlp> <version>1.0+</version> <inputTemplate> src/jnlp/jnlp.vm </inputTemplate> <outputFile> HogeHoge.jnlp </outputFile> <mainClass> com.example.foo.bar.MainClass </mainClass> </jnlp> .jnlpファイルを生成するためのVelocityのテンプレートを指定 .vmで${dependencies}と書いておけば、pom.xmlの<dependencies>要素以下をもとに、 <jar>要素群を自動埋め込みするよ!

  16. <sign> <keystore>/home/javajava/verisign.p12 </keystore> <keypass /> <storepass>xxxxxxxx</storepass> <storetype>pkcs12</storetype> <alias> example.com's verisign, inc. id </alias> <verify>false</verify> </sign> コード署名のための設定 ここで指定した鍵ストア・aliasで、 .jarファイル群を自動的に署名するよ

  17. target/jnlp/の下に、 HogeHoge.jnlpファイル そのプロジェクトのartifactのjarファイル 依存artifactのjarファイルその1 依存artifactのjarファイルその2 依存artifactのjarファイルその3…  を、作成する。 これら全部が、mvn install 一発で完成!

  18. すっげー便利!ということが  わかった人、拍手してください! ありがとう

  19. 「コード署名証明書」、買ったことありますか?「コード署名証明書」、買ったことありますか? ここで質問.

  20. コード署名証明書の費用 • Verisign社のコード署名証明書 • ¥ 94,500(税込、1年間有効) • GlobalSign社のコード署名証明書 • ¥ 39,900(キャンペーン価格;-,税込、1年間有効) 毎年の更新時に、「組織の実在性確認」「申請の意思確認」を受けなければならない.

  21. 証明書購入プロセス • 技術担当者が,購入内容と購入手順を示した計画書を作成 • えらいひとが,計画書をもとに購入にGOサインを出す • 事務担当者が,組織の存在証明に必要な書類一式を揃えて認証局に郵送 • 技術担当者が,Webなどを通じて「コード署名証明書」の発行を認証局に依頼 • 会計担当者が,金融機関を通じて購入手続きを行なう • えらいひとが,認証局からの電話連絡に答えて存在証明をする • 技術担当者が,Webを通じて「コード署名証明書」を取得 • 技術担当者が,「コード署名証明書」を用いて署名作業を行なう これを毎年アレンジするのは、正直、ものすごーく面倒くさい!!! (とくに、えらいひと関連…)

  22. 「オレオレ証明書」、使ってますか? ここで質問.

  23. JavaWebStartは、何らかのコード署名をしないと、はっきりいって使い物にならない!JavaWebStartは、何らかのコード署名をしないと、はっきりいって使い物にならない! • (本番の環境なのに) 「オレオレ証明書」を作って使っている例が多い。Cf. 「高木浩光@自宅の日記」 • http://takagi-hiromitsu.jp/diary/ • これに対し、Sun JREは、わりと激しい文面で、「オレオレ証明書だから起動をしないように!」という意味の警告表示をしてくる。

  24. コード署名の「理想」と「現実」 • PKIの崇高なる理想、しかし、 • 各種の「オレオレ証明書」が氾濫する現実。 • 「オレオレ証明書」の警告を、ユーザにわざわざ無視させるような、危険な操作マニュアルが、まかり通っている。

  25. 無償で正統?なコード署名証明書を入手する方法(アンチテーゼとして)無償で正統?なコード署名証明書を入手する方法(アンチテーゼとして)

  26. Thawte Personal e-mail certificates メアドさえあれば、誰にでも無料で、その場ですぐに、メール署名用の証明書(PKCS7)を発行してくれる。 この証明書は、jarsignerでのコード署名にも使える。 http://www.thawte.com/

  27. Javaコンパネの「証明書」画面 デフォルトでは、Class3 CAと、Freemail CAが、なぜか同等の認証機関として設定されている!

  28. Thawte Personal Freemail CAはどのように扱うべきか? • Sunは、JREコンパネのSignerCA/Systemから、Thawte Personal Freemail CAのエントリを削除すべきではないのか? • (Sunがどうするかはともかくとして、)ユーザは、こういう怪しいCAを自分の判断でRemoveする能力を持つべき。 • 開発者/配布者は、「オレオレ証明書」を本番で使ってはいけない!

  29. ちなみに、Maven2のドキュメントには、こんな記述があります:ちなみに、Maven2のドキュメントには、こんな記述があります: Mavenリポジトリについて… It should be noted that Maven intends to include enhanced support for such features in the future, including click through licenses on downloading, and verification of signatures. http://maven.apache.org/guides/introduction/introduction-to-repositories.html「Mavenでは、ダウンロード時のクリックスルーライセンスや署名の確認を含む機能拡張を行う予定がある」(Maven翻訳サブプロジェクト訳)

  30. コード署名証明書は、購入も利用も、色々と面倒だけど、コード署名証明書は、購入も利用も、色々と面倒だけど、  ユーザには、なるべく正しい使い方をさせよう! おわり

  31. 参考:元ネタ初出時のURL • webstart-maven-plugin • http://sqs.cmr.sfc.keio.ac.jp/tdiary/20070709.html#p01 • 無償で正統的なコード署名証明書を入手する方法 http://sqs.cmr.sfc.keio.ac.jp/tdiary/20051003.html

  32. おまけ

  33. JavaWebStart、たとえば、こんなふうに使えます。JavaWebStart、たとえば、こんなふうに使えます。 本発表者による開発事例 (IPA未踏「SQS2.0の開発」での案件)

  34. Swingアプリ内部でPDFを生成し、JNLP APIのブラウザ連携機能で、そのPDFをAdobeReaderで表示 アウトライン編集型XMLエディタ 紙帳票のPDF XHTML+XFormsから、XSLTで、SVGPrint,FOを作って 紙帳票(アンケート用紙)を印刷

  35. 汎用のADF(自動紙送り)装置付きスキャナでスキャン汎用のADF(自動紙送り)装置付きスキャナでスキャン

  36. JavaWebStartでP2Pグリッド たくさん起動しておくと、自動的に分散並列して処理が高速化する 紙帳票(アンケート用紙)スキャン画像の解析・読み取り

  37. JavaWebStartから起動させたhttpdとでAjax GoogleGears的な仕組みを、自前で実装してみる 紙帳票(アンケート用紙)の集計結果をiTunes的GUIで検索・閲覧・修正・データ書き出し

  38. 「SQS」で検索http://www.google.co.jp/search?q=SQS ApacheLicenseVer.2開発者絶賛募集中!

More Related