Download presentation
Presentation is loading. Please wait.
1
webstart-maven-plugin + 無償で正統?なコード署名 証明書を入手する方法
久保 裕也
2
自己紹介 ____ なまえ: くぼひろや しごと: オープンソースプログラマ 兼 大学教員
自己紹介 ____ なまえ: くぼひろや しごと: オープンソースプログラマ 兼 大学教員 JavaOneTokyo2005 Night for Java Tech出場 IPA未踏ソフト2007年I期採択者 採択テーマ:「SQS2.0の開発」
3
いいたいこと! みんな、もっと、 デスクトップアプリを書こうよ! JavaWebStartでの開発には、 Maven2が便利だよ!
4
JavaWebStart、 つかってますか?
5
JavaWebStart とは? ブラウザ上から、クリックひとつで、 Javaアプリを起動させるしくみ。 オフラインでの起動も可能。
AIR, ClickOnce などと類似の技術 オフラインでの起動も可能。 オンラインなら最新バージョンへの更新も簡単。
6
たとえばこんな感じ
7
JavaWebStartアプリの開発・配置
「配布用ファイル群」を用意する メタデータ(JNLPファイル)を書く Jarファイルをパックする (Jarファイルに署名する) 「配布用ファイル群」を Webサーバ上に配置する
8
JavaWebStartのセキュリティ デフォルトでは、SandBox内で動作
開発者が、システム資源を、JNLP API経由で 獲得するようにプログラムを書けば、 ユーザが、システム資源を、逐次的・明示的に許可することで、ローカルファイルの読み書き等が可能に 開発者/配布者が、すべてのJarにコード署名をし、 ユーザが、初回起動時に許可をすれば、 SandBox外で動作させることも可
9
「このセキュリティ証明書は、 信頼できる団体によって 発行されています」
10
ところで。 ちょっと本気のJavaプロジェクトでは:
依存関係にある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
11
というわけで、 色々と面倒くさい! 開発・設定・署名・配布などなど、 多様な場面・ツール内で、
いろいろなjarファイルへの参照を、 膨大な数で管理しなければならない! 開発環境で、jarファイルを設定…… JNLPファイルで、jarファイルを設定…… antでコード署名をするためにbuild.xml内で jarファイルを設定…… …特に、コード署名が、面倒くさい! というわけで、 色々と面倒くさい!
12
webstart-maven-plugin
を、使おう! ここからは、ようやくMavenの話です。
13
pom.xml 内で、 webstart-maven-pluginを 設定
<groupId> org.codehaus.mojo </groupId> <artifactId> webstart-maven-plugin </artifactId>
14
.jnlpで必要なartifact名を ひたすら列挙
<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> これらの artifact群で、 JWSアプリの 構成を指定するよ。
15
.jnlpファイルを生成するための Velocityのテンプレートを指定
<version>1.0+</version> <inputTemplate> src/jnlp/jnlp.vm </inputTemplate> <outputFile> HogeHoge.jnlp </outputFile> <mainClass> com.example.foo.bar.MainClass </mainClass> </jnlp> .vmで${dependencies} と書いておけば、 pom.xmlの<dependencies> 要素以下をもとに、 <jar>要素群を 自動埋め込みするよ!
16
コード署名のための設定 <sign> <keystore> /home/javajava/verisign.p12
<keypass /> <storepass>xxxxxxxx</storepass> <storetype>pkcs12</storetype> <alias> example.com's verisign, inc. id </alias> <verify>false</verify> </sign> ここで指定した 鍵ストア・aliasで、 .jarファイル群を 自動的に署名するよ
17
これら全部が、 mvn install 一発で完成! target/jnlp/の下に、 HogeHoge.jnlpファイル を、作成する。
そのプロジェクトのartifactのjarファイル 依存artifactのjarファイルその1 依存artifactのjarファイルその2 依存artifactのjarファイルその3… を、作成する。 これら全部が、 mvn install 一発で完成!
18
すっげー便利! ということが わかった人、 拍手してください! ありがとう
19
「コード署名証明書」、 買ったことありますか?
ここで質問. 「コード署名証明書」、 買ったことありますか?
20
コード署名証明書の費用 Verisign社のコード署名証明書 GlobalSign社のコード署名証明書
¥ 94,500(税込、1年間有効) GlobalSign社のコード署名証明書 ¥ 39,900(キャンペーン価格;-,税込、1年間有効) 毎年の更新時に、 「組織の実在性確認」「申請の意思確認」を 受けなければならない.
21
証明書購入プロセス これを毎年アレンジ するのは、正直、 ものすごーく 面倒くさい!!!
技術担当者が,購入内容と購入手順を示した計画書を作成 えらいひとが,計画書をもとに購入にGOサインを出す 事務担当者が,組織の存在証明に必要な書類一式を揃えて認証局に郵送 技術担当者が,Webなどを通じて「コード署名証明書」の発行を認証局に依頼 会計担当者が,金融機関を通じて購入手続きを行なう えらいひとが,認証局からの電話連絡に答えて存在証明をする 技術担当者が,Webを通じて「コード署名証明書」を取得 技術担当者が,「コード署名証明書」を用いて署名作業を行なう これを毎年アレンジ するのは、正直、 ものすごーく 面倒くさい!!! (とくに、えらいひと関連…)
22
ここで質問. 「オレオレ証明書」、 使ってますか?
23
JavaWebStartは、 何らかのコード署名をしないと、 はっきりいって使い物にならない!
(本番の環境なのに) 「オレオレ証明書」を作って 使っている例が多い。 Cf. 「高木浩光@自宅の日記」 これに対し、Sun JREは、わりと激しい文面で、 「オレオレ証明書だから起動をしないように!」 という意味の警告表示をしてくる。
24
コード署名の「理想」と「現実」 PKIの崇高なる理想、しかし、 各種の「オレオレ証明書」が氾濫する現実。
「オレオレ証明書」の警告を、 ユーザにわざわざ無視させるような、 危険な操作マニュアルが、 まかり通っている。
25
無償で正統?な コード署名証明書を 入手する方法 (アンチテーゼとして)
無償で正統?な コード署名証明書を 入手する方法 (アンチテーゼとして)
26
Thawte Personal e-mail certificates
メアドさえあれば、 誰にでも無料で、 その場ですぐに、 メール署名用の 証明書(PKCS7) を発行してくれる。 この証明書は、 jarsignerでの コード署名にも 使える。
27
Javaコンパネの「証明書」画面 デフォルトでは、Class3 CAと、 Fre CAが、なぜか 同等の認証機関として設定されている!
29
Thawte Personal Freemail CAは どのように扱うべきか?
Sunは、JREコンパネのSignerCA/Systemから、 Thawte Personal Fre CAのエントリを 削除すべきではないのか? (Sunがどうするかはともかくとして、) ユーザは、こういう怪しいCAを 自分の判断でRemoveする能力を持つべき。 開発者/配布者は、「オレオレ証明書」を 本番で使ってはいけない!
30
ちなみに、Maven2のドキュメントには、 こんな記述があります:
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. 「Mavenでは、ダウンロード時のクリックスルーライセンスや署名の確認を含む機能拡張を行う予定がある」(Maven翻訳サブプロジェクト訳)
31
コード署名証明書は、購入も利用も、色々と面倒だけど、
ユーザには、なるべく 正しい使い方をさせよう! おわり
32
参考:元ネタ初出時のURL webstart-maven-plugin
無償で正統的なコード署名証明書を入手する方法
33
おまけ
34
JavaWebStart、 たとえば、 こんなふうに使えます。
本発表者による開発事例 (IPA未踏「SQS2.0の開発」での案件)
35
Swingアプリ内部でPDFを生成し、 JNLP APIのブラウザ連携機能で、そのPDFをAdobeReaderで表示
アウトライン編集型 XMLエディタ 紙帳票のPDF XHTML+XFormsから、XSLTで、SVGPrint,FOを作って 紙帳票(アンケート用紙)を印刷
36
汎用の ADF(自動紙送り) 装置付きスキャナで スキャン
37
JavaWebStarで P2Pグリッド たくさん起動しておくと、 自動的に分散並列して 処理が高速化する
紙帳票(アンケート用紙) スキャン画像の解析・読み取り
38
JavaWebStarから 起動させたhttpdと でAjax
GoogleGears的な仕組みを、自前で実装してみる 紙帳票(アンケート用紙)の集計結果を iTunes的GUIで 検索・閲覧・修正・データ書き出し
39
「SQS」で検索 http://www.google.co.jp/search?q=SQS
ApacheLicenseVer.2 開発者絶賛募集中!
Similar presentations
© 2025 slidesplayer.net Inc.
All rights reserved.