プログラム悪戦苦闘日記

はてなダイアリーからの移行(遺物)

Tomcat4.1でSSLを使う

 
 結構うまくいかないものなので、まとめておく。

1.keytoolを使ってプライベートRSAキーを生成する

1. keytoolはJDKのインストールディレクトリのbinの中にある。コマンドプロンプトで次のように入力する

keytool -genkey -alias tomcat -keyalg RSA

2.パスワードを聞いてくるので、適当に入力する
3. 「姓名を入力してください」と聞かれるが、ここではサーバーのホスト名かIPアドレスを入れる
自分のPCでテスト用のときは、localhost でよい
4. 以下、いろいろ聞かれるが、適当に入力する
5. 〜でよろしいですか、の後で鍵のパスワードを聞かれる。かならず2と同じパスワードを入力する。
これで、自分のホームディレクトリに .keystore というファイルができる。

2.証明書に自己署名をする

1. 以下のコマンドで署名できる。

keytool -selfcert -alias tomcat

ちなみに、本番の場合は認証局から署名をもらう。

以上の入力を載せると、次のようになる。(太字が入力部分)

 >keytool -genkey -alias tomcat -keyalg RSA
キーストアのパスワードを入力してください:  hogehoge
姓名を入力してください。
  [Unknown]:  localhost
組織単位名を入力してください。
  [Unknown]:  localhost
組織名を入力してください。
  [Unknown]:  localhost
都市名または地域名を入力してください。
  [Unknown]:  localhost
州名または地方名を入力してください。
  [Unknown]:  localhost
この単位に該当する 2 文字の国番号を入力してください。
  [Unknown]:  JA
CN=localhost, OU=localhost, O=localhost, L=localhost, ST=localhost, C=JA でよろ
しいですか?
  [no]:  yes

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

 >keytool -selfcert -alias tomcat
キーストアのパスワードを入力してください:  hogehoge

 >keytool -list
キーストアのパスワードを入力してください:  hogehoge

キーストアのタイプ: jks
キーストアのプロバイダ: SUN

キーストアには 1 エントリが含まれます。

tomcat, 2005/03/19, keyEntry,
証明書のフィンガープリント (MD5): 49:F7:85:DD:25:FA:03:C4:13:94:2C:67:2E:95:23:D
4

 >

3.TomcatSSLコネクタをセットアップする

1. 先ほどできた .keystore ファイルを適当な場所にコピーする。今回は簡単のためにTomcatとインストールディレクトリに置く。
2. Tomcat の conf/server.xmlのうち、SSLコネクタのコメントをはずす
↓この部分だ。

    <!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
    <!--
    <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>
    -->

3. Tomcat管理画面から行う場合は、

  • Tomcat Server > Service をクリックして「新しいコネクタを作成」を選択する
  • 画像の赤く囲んだところを入力する。ポートは8443にしてあるが、SSLのデフォルトポート443でもよい
  • 設定を保存し、変更を反映する。
  • conf/server.xml を開き、
    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector" acceptCount="100" allowTrace="false" bufferSize="2048" compression="off" connectionLinger="-1" connectionTimeout="20000" connectionUploadTimeout="300000" debug="0" disableUploadTimeout="true" enableLookups="true" maxKeepAliveRequests="100" maxProcessors="75" maxSpareProcessors="5" minProcessors="5" port="8888" protocolHandlerClassName="org.apache.coyote.http11.Http11Protocol" proxyPort="0" redirectPort="8443" scheme="http" secure="false" serverSocketTimeout="0" tcpNoDelay="true" tomcatAuthentication="true" useBodyEncodingForURI="true" useURIValidationHack="false">
      <Factory className="org.apache.catalina.net.DefaultServerSocketFactory"/>
    </Connector>
    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector" acceptCount="10" allowTrace="false" bufferSize="2048" compression="off" connectionLinger="-1" connectionTimeout="20000" connectionUploadTimeout="300000" debug="0" disableUploadTimeout="false" enableLookups="true" maxKeepAliveRequests="100" maxProcessors="75" maxSpareProcessors="5" minProcessors="5" port="8009" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" proxyPort="0" redirectPort="8443" scheme="http" secure="false" serverSocketTimeout="0" tcpNoDelay="true" tomcatAuthentication="true" useBodyEncodingForURI="true" useURIValidationHack="false">
      <Factory className="org.apache.catalina.net.DefaultServerSocketFactory"/>
    </Connector>
    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector" acceptCount="10" allowTrace="false" bufferSize="2048" compression="off" connectionLinger="-1" connectionTimeout="60000" connectionUploadTimeout="300000" debug="0" disableUploadTimeout="false" enableLookups="true" maxKeepAliveRequests="100" maxProcessors="20" maxSpareProcessors="5" minProcessors="5" port="8443" protocolHandlerClassName="org.apache.coyote.http11.Http11Protocol" proxyPort="0" redirectPort="-1" scheme="https" secure="true" serverSocketTimeout="0" tcpNoDelay="true" tomcatAuthentication="true" useBodyEncodingForURI="false" useURIValidationHack="false">
      <Factory className="org.apache.coyote.tomcat4.CoyoteServerSocketFactory" clientAuth="false" keystoreFile="C:\Applications\Apache Group\Tomcat 4.1\bin\..\.keystore" keystorePass="hogehoge" keystoreType="JKS" protocol="TLS" randomFile="C:\xxxxx\random.pem" rootFile="C:\xxxxx\root.pem"/>
    </Connector>

4. Tomcatを再起動する

Tomcatにアクセスしてみる

h ttps://localhost:8443/
でアクセスしてみる。自己署名なので警告がでるが、「はい」を選ぶと、めでたくSSLでアクセスできる。
 
 おつかれさま。