opamp_sando's blog

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

tomcatでhttpsを有効にしてみる

SCM ManagerやNexusでhttpsを使いたかったのでtomcat7(on ArchLinux)でhttpsを有効化してみた。

正直httpsとかsslとか理解が不十分なので、この記事じゃセキュリティとしては不完全だと思います。とりあえず現時点でのメモということで もっと何かわかれば更に追記なり新しい記事なり書きます。

keytoolでkeystoreを作る

$ sudo -u tomcat keytool -genkey -alias tomcat -keyalg RSA

としてtomcatユーザーでkeytoolコマンドを実行。そしてkeystoreを制作します。特にPATHを指定しなかった場合、".keystore"ファイルが実行したユーザーのホーム以下に制作されます。
実行するとパスワードを設定したり州を設定したりなので、まあ適当に設定します。州とかはすんでる県とかでいいんじゃないかと。

最後にもう一つパスワードを設定するように促されますが、ここはそのままエンターを押しておkです。
とりあえず、ここでは"hogehoge"とパスワードを設定したとします。

server.xmlを設定

server.xmlに追記します。

<Connector protocol="HTTP/1.1"
     port="8443" maxThreads="200" connectionTimerout="20000"
     scheme="https" secure="true" SSLEnabled="true"
     keystoreFile="/usr/share/tomcat7/.keystore" keystorePass="hogehoge"
     clientAuth="false" sslProtocol="TLS"/>

おそらくすでには存在してるので、その下くらいに書きます。
port番号は適当に設定します。上のようにkeystoreFileで".keystore"を指定します。ArchLinuxで上のコマンドを実行していた場合、上記のようになるはずなので特に偏向の必要はありません。
そしてkeystorePassには、先ほど設定した"hogehoge"を設定します。
それ以外はコピペで問題ないかと思います。

更に、上のほうにある

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" />

とします。
(この作業必要あるかよくわからないけど、一応やっておきます)

終わり

これでうまくいけばhttps://でportを上で設定した値にしてアクセスしてやるとhttps接続できます。
が、証明書が信用されてないので普通にブラウザから警告が出たりするかと思います。そこの解決はまあぼちぼち。
SCM Managerでもhttpsが利用可能になりますが、pushするときエラーが出まくるので、そのへんもぼちぼち...

ちなみに一時的解決法としては、hgrcに

[hostfingerprints]
www.example.com = 38:76:52:7c:87:26:9a:8f:4a:f8:d3:de:08:45:3b:ea:d6:4b:ee:cc

みたいにすれば、一時的にはなんとかなる。ちなみに後ろの値は証明書によって変わると思う。

参考 -> http://mercurial.selenic.com/wiki/CACertificates


なんか、かなり中途半端な気がするけどとりあえず忘れないうちにメモしておく。あんまり当てにしない方がいいです。

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