目次へ

11.3. HTTPS

最後に説明するCLIENT-CERT認証は、SSLにおけるクライアント認証の仕組を利用するものです。そのためにはHTTPSで通信できる必要がありますので、まずTomcatにおいてHTTPS通信をするための設定について説明します。

TomcatにおいてHTTPS通信を行うための設定は、conf/server.xmlで行います。HTTPS通信のための設定はデフォルトでコメントアウトされていますので、以下のような設定を探し、コメントアウトを解除してください。

<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
           port="8443" minProcessors="5" maxProcessors="75"
           enableLookups="true"
           acceptCount="100" debug="0" scheme="https" secure="true"
           useURIValidationHack="false" disableUploadTimeout="true">
  <Factory className="org.apache.coyote.tomcat4.CoyoteServerSocketFactory"
           clientAuth="false" protocol="TLS" />
</Connector>

HTTPの設定の場合と同じで、<Connector>の「port」属性でサーバが待ち受けるポート番号を指定しています。従ってブラウザからHTTPSでアクセスする場合には、このポート番号に対してアクセスするようにして下さい。

HTTPS通信に関する設定は、<Factory>タグ内の属性で行います。「protocol」属性で「TLS」と指定されているのは、この<Connector>がSSL(TLS)を行うためのものであることを示しています。「clientAuth」属性は、SSLでクライアント認証を必要とするかどうか指定します。「false」となっているのは、クライアント認証を行わない事を示していますが、ここではデフォルト値のまま変えない事にします。

これらの属性に加えて、「keystoreFile」「keystorePass」の2つの属性を付け加えます。keystoreFileはサーバの署名情報や公開鍵・秘密鍵が格納されたファイル(キーストア)を絶対パスか相対パスで指定します。相対パスで指定した場合には、Tomcatのホームディレクトリからのパスとみなされます。ファイルの詳細については、次に説明します。keystorePassはそのファイルにアクセスするためのパスワードを指定します。これらの設定を全て行うと、以下のようになります。

<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
           port="8443" minProcessors="5" maxProcessors="75"
           enableLookups="true"
           acceptCount="10" debug="4" scheme="https" secure="true"
           useURIValidationHack="false" disableUploadTimeout="true">
  <Factory className="org.apache.coyote.tomcat4.CoyoteServerSocketFactory"
           clientAuth="false" protocol="TLS" 
           keystoreFile=".keystore" keystorePass="tomcat" />
</Connector>

キーストアは、公開鍵や秘密鍵、証明書を管理するファイルです。HTTPS通信を行うためには、キーストアにサーバ側の公開鍵/秘密鍵、および証明書が含まれている必要があります。キーストアとのやり取りを行うには、JDK付属の「keytool」ツールを使用します。鍵を作成して登録するためには、以下のようにします。それぞれのオプションの意味は表の通りです。

$ keytool -genkey -keyalg RSA -alias www.techscore.com -keystore .keystore -storepass tomcat
-genkey 鍵の作成を指示
-keyalg 鍵のアルゴリズムを指定
-alias 作成した鍵および署名情報が登録される名前を指定
-keystore キーストアファイルを指定
-storepass キーストアにアクセスする際のパスワードを指定

コマンドを実行すると、以下のように、鍵の作成に必要な証明書情報の入力が求められます。最後に求められる鍵パスワードとは、作成した鍵にアクセスするために必要なパスワードのことです。ここではキーストアのパスワードと同じで十分です。

姓名を入力してください。
  [Unknown]:  www.techscore.com
組織単位名を入力してください。
  [Unknown]:  developing
組織名を入力してください。
  [Unknown]:  4dd
都市名または地域名を入力してください。
  [Unknown]:  Shimogamo
州名または地方名を入力してください。
  [Unknown]:  Kyoto
この単位に該当する 2 文字の国番号を入力してください。
  [Unknown]:  JP
CN=www.techscore.com, OU=developing, O=4dd, L=Shimogamo, ST=Kyoto, C=JP でよろしいですか?
  [no]:  yes

<www.techscore.com> の鍵パスワードを入力してください。
      (キーストアのパスワードと同じ場合は RETURN を押してください):

キーストア内にある証明書の一覧を確認するには、「-list」オプションを使用します。「-v」オプションをつけると、署名情報も確認できます。

$ keytool -list -keystore .keystore -storepass tomcat

これでHTTPS通信を行うための準備は十分です。httpの代わりにhttps、ポート番号として8443を指定してアクセスすると、HTTP通信のときと同じようにWebアプリケーションが実行されるはずです。その際、サーバ側で作成した証明書は、どの信頼された機関にも署名されたものではありません。ですからブラウザからのアクセスに際して、確認を求められるはずです。その時、以下のようにサーバの署名を見ることができます。その内容は、先ほど鍵を作成する際に入力した内容と同じになります。

サーバの署名を見た時の図

(実習課題3)

HTTPS通信の設定を行い、実習課題2のWebアプリケーションが実行されることを確認しなさい。

またHTTPS通信においても、BASIC認証やDIGEST認証、FORM認証が実行できることを確認しなさい。

解答例はこちら

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp