忍者ブログ
愚痴とか備忘録とか
[14] [13] [12] [11] [10] [9] [8] [7] [6] [5] [4]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


TOMCATにSSLをかける方法(TOMCAT5.X)

思ったよりも難しくない・・・のか?



TOMCATインストールディレクトリ=TOMCAT_HOME
TOMCAT_HOME/conf/server.xmlにまずSSL用の設定

ポート番号として8443が指定されたConnector要素を探しだす。
デフォルトではコメントアウトされている。

<!--
    <Connector port="8443"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" disableUploadTimeout="true"
               acceptCount="100" debug="0" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" />
 -->

Connector要素の前後にあるコメント記号を削除して、コネクタを有効に。
次に、8443になっているポート番号をSSLで一般的な443にしておく。
(443以外を使うつもりならそのポートへ変更)

鍵を作る。
これにはJ2SEに含まれているkeytoolツールを使う。次のように入力して起動。(JAVAにパス通しておいてね)

$ keytool -genkey -alias tomcat -keyalg RSA

起動したらコマンドラインで対話形式になっているので、質問に1つずつ答えていく。
鍵の発行者に関する情報を入力していく。
太字の部分が入力箇所。

キーストアのパスワードを入力してください:  changeit
姓名を入力してください。
  [Unknown]:  hoge.com
 
*姓名と書かれているが、Common Name(CN)として登録される SSL/TLSで使うドメイン名を入力する。
 

組織単位名を入力してください。
  [Unknown]:  JAVA Developer
 
*Organization Unit (OU) 組織単位名。なんでもよい。部署名とか。複数サーバで同じサーバ名を使う場合は、それぞれ別の名前にする。


組織名を入力してください。
  [Unknown]:  hogehoge

*Organization Name (O) として登録される。
 CAに認証してもらうときはドメインのwhoisに登録されている所有者の組織名と同じにする。
 個人の場合は個人名にする。

都市名または地域名を入力してください。
  [Unknown]:  hogeku

*市区町村

州名または地方名を入力してください。
  [Unknown]:  Tokyo

*ST 州、都道府県


この単位に該当する 2 文字の国番号を入力してください。
  [Unknown]:  JP

*C 国番号

CN=hoge.com, OU=JAVA Developer, O=, L=hogehoge, ST=Tokyo, C=JP でよろしいですか?
  [no]:  yes
<tomcat> の鍵パスワードを入力してください。
        (キーストアのパスワードと同じ場合は RETURN を押してください):  changeit
$

この中で、「changeit」というのはデフォルトの鍵とキーストアのパスワード。
デフォルトで「changeit」になっている。
パスワードを変えた場合は、先の設定ファイルのSSLのConnector要素の子要素にパスワード指定を追記する。

これでユーザーのディレクトリにキーができる。
キーストアの作成先は、Windowsなら"%USERPROFILE%"\.keystore。
UNIXならホームディレクトリ下~/.keystoreとなる。この中に鍵が追加されているはず。
キーストアを保存したディレクトリを移動した場合もSSLのConnector要素の子要素にパスの指定を追記する必要がある。

<Connector port="443"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" disableUploadTimeout="true"
               acceptCount="100" debug="0" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
               keystoreFile="/path/.keystore" <!-- キーストアの場所 -->
               keystorePass="hogehoge" <!-- パスワード -->
                />

Tomcatを再起動。

https//サーバーアドレス/ でGO

また、特定のページに対して、httpsを強制する方法は
各WEB-INF内「web.xml」に「security-constraint」を設定する。

<security-constraint>
  <web-resource-collection>
    <url-pattern>/SSLにしたい場所/*</url-pattern>
    <http-method>GET</http-method>
    <http-method>POST</http-method>
  </web-resource-collection>
  <user-data-constraint>
    <transport-guarantee>CONFIDENTIAL<transport-guarantee>
  </user-data-constraint>
</security-constraint>

※「transport-guarantee」では、SSLを使用したい場合には、「CONFIDENTIAL」を指定する。
HTTPでアクセスすると、自動的にHTTPSでアクセスされるようにリダイレクトされる。

https//サーバーアドレス/指定ページ でGO

PR


忍者ブログ [PR]
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
ブログ内検索
プロフィール
HN:
Baffai
性別:
非公開
趣味:
なんか色々
自己紹介:
恐怖先行型
Advertisement
リンク
バーコード
カウンター