opamp_sando's blog

クソザコが割りと適当なことを書くためにある備忘録です。あとたまに普通の日記も書きます

tomcat7でhttpsを使う

注意 ArchLinux環境で作業しているので他のディストリビューションとは勝手が違う部分がある可能性があります。

httpstomcatで使う。昨日作ったapache用の鍵を使いたいところだけどよくわからなかったのでkeytoolコマンドで生成したものを利用する。

例えばArchLinuxならtomcat7はtomcatというユーザーが実行する。そしてこのtomcatユーザーのhomeディレクトリは/usr/share/tomcat7となっている。(自動生成されているはず)
よってここ以下にkeytoolでkeystoreを作る

$ keytool -genkey -alias tomcat -keystore <keystore file name> -storepass <password here>

このような文法で作る。<>で書かれてるところは適当に設定してほしい。
で、これを実行するといくつか質問されるので答える。
答えたら、最後にパスワードを再び聞かれるので何も入力せずにエンターを押す(storeのものと同じになる)


続いて/usr/share/tomcat7/conf/server.xmlを開いて以下のようにConnectorを編集する。
サンプルを貼るので参考に設定する...

       <Connector port="8443" 
                protocol="HTTP/1.1"
                scheme="https"
                secure="true"
                SSLEnabled="true"
                keystoreFile="${user.home}/.keystore"
                keystorePass="store_password_here"
                SSLProtocol="TLS"
                clientAuth="false"
                maxThreads="150"
                connectionTimeout="20000"
        />

keystoreFileには上のkeytoolで生成したファイルへのPATHを指定する。${user.home}を使うことでtomcatユーザーのhomeを指定できる。keystorePassは上のコマンドで指定したstoreのpasswordを入力する。
他の部分はコピーしてもいいかな。

できたら、tomcatを起動(再起動)する。

$ sudo systemctl start tomcat7

うまく行けばhttpsでアクセス可能なはず。

以下参考サイト

http://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html#SSL_and_Tomcat
http://apis.jpn.ph/fswiki/wiki.cgi?page=Java%2Fkeytool

java6を使っている場合

以前にも書いたがArchLinuxがsystemctlでデーモンを制御するようになってから以前の方法だけでは不十分となった。
少し強引な方法だがjava6を使っている場合以下のファイルを編集する。

$ sudo vi /usr/lib/systemd/system/tomcat7.service

このファイル中に

Environment=TOMCAT_JAVA_HOME=/usr/lib/jvm/java-7-openjdk

こんな行があると思うのでこれを

Environment=TOMCAT_JAVA_HOME=/usr/lib/jvm/java-6-openjdk

という感じにjava-6-openjdkを使うように変更する。そして

$ sudo systemctl --system daemon-reload

だったかそんな感じのコマンドを実行する。

そしたらjava6で起動してくれるようになる。まあそろそろうちもjava7にしないとかなと思っているけど...

Firefox ブラウザ無料ダウンロード