Jettyメモ
これまでの開発で使ってたJettyをEC2上のステージング環境に反映します。
認証やSSLの設定で諸々いじったので、備忘です。
調べながら、設定変更してるから、結局どこを変更して、出来たかがわかんね
とかならないようにちゃんとまとめないとなー。
start.ini
→jetty-ssl.xmlのコメント解除
→jetty-requestlog.xmlのコメント解除
jetty.xml
→BASIC認証の為のRealmの設定(HashLoginService)
BASIC認証は、もうやめる予定ですが。
jetty-ssl.xml(デフォルトを残したいので、独自のファイル)
→SSLの設定。ほぼデフォルトのまま。keyStorePasswordの変更ぐらい。
keystore(デフォルトを残したいので、独自のファイル)
→SSLのkeystore
realm.properties(デフォルトを残したいので、独自のファイル)
→BASIC認証のrealmファイル
web.xml
→security-constraintの設定。
認証方式、SSL要求、DefaultServletの設定。
いやー、useFileMappedBufferハマったなー。
あとは、JavaやらScalaやらのclass配置します。
まだサーバが1台(さみしっ)だから、あれだけど、
ここらへん自動デプロイとか考えないとな。Jenkins勉強したい。
あと設定って、jetty.xmlに全て書けそうな気がするんですが、
何を外に出す(外部xml)かとかもちゃんとしないと、分かりづらくなりそうです。
■ポート
Jettyは、80番で起動するには、管理者権限が必要なのですが、
セキュリティ上、rootでは起動したくないので、
サボりですが、iptables使って、80→8080にリダイレクトしてました。
とりあえず、これと同じで、SSLの場合も443を8443にリダイレクトしたいと思います。
(参考:http://blog.fukaoi.org/2010/03/11/jetty-port-80)
実際、何もしないと、
https://hoge.com
にアクセス出来ません。
https://hoge:8443.com
は、OK。
[hoge@ec2]$ sudo /sbin/iptables -t nat -I PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8443 [hoge@ec2]$ sudo /etc/init.d/iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ] [hoge@ec2]$ sudo /etc/init.d/iptables restart iptables: Flushing firewall rules: [ OK ] iptables: Setting chains to policy ACCEPT: nat [ OK ] iptables: Unloading modules: [ OK ] iptables: Applying firewall rules: [ OK ]
確認
[hoge@ec2]$ sudo iptables -t nat -L Chain PREROUTING (policy ACCEPT) target prot opt source destination REDIRECT tcp -- anywhere anywhere tcp dpt:https redir ports 8443 REDIRECT tcp -- anywhere anywhere tcp dpt:http redir ports 8080 Chain POSTROUTING (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
確認コマンドを、iptables -Lで、
なんで出ないの?とか思ってしまった。natですよ。nat。
EC2のセキュリティグループも80と443だけにしよう。
確認。証明書のエラーもなし。httpsで443でいける。
復元まではしてないけど、Wiresharkで、SSLの暗号化も確認出来た。