h2oでcipher-suiteを選択して利用する。
H2O におけるディレクトリトラバーサルの脆弱性というの対応をしたときのメモ^^;;
インストールしたときの手順も書き直してみる。
前回の手順はh2oで手軽にHTTP2.0を体験してみるに書かれているのでほとんど同じ。
OSはAmazon Linux AMI release 2015.09を利用しています。
前準備
yum group install “Development Tools”
yum install cmake openssl-devel
h2oのSourceをpull
cd /usr/local/src
git clone https://github.com/h2o/h2o.git
h2oをコンパイル
cd /usr/local/src
cmake .
make
make install
h2oの設定
h2oの設定は前回とそんなに違いはありません。
ただそのままだとSSL Labsのチェックでは「B」でした。
CipherでRC4を使っているのはあまりよろしくないということでRC4とかその他諸々を使わないような設定を入れ込みました。
Cipherを変更した結果「A-」までなりました。error-log: /var/log/h2o/error.log
http2-reprioritize-blocking-assets: ON
max-connections: 1024
num-threads: 1listen:
port: 443
ssl:
certificate-file: /home/ec2-user/ssl/example.txt
key-file: /home/ec2-user/ssl/key.txt
cipher-suite: AES128-SHA:ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:HIGH:MEDIUM:!aNULL:!MD5:!RC4hosts:
“www.example.jp:443”:
listen:
port: 443
ssl:
certificate-file: /home/ec2-user/ssl/example.txt
key-file: /home/ec2-user/ssl/key.txt
cipher-suite: AES128-SHA:ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:HIGH:MEDIUM:!aNULL:!MD5:!RC4
paths:
/:
proxy.reverse.url: http://localhost/
access-log:
/var/log/h2o/ssl-zabbix-access.log
まぁとりあえずこれで運用してみます。
Forward Securityをどうするかは少し先延ばしする^^;;
h2o Forward Securityでググると前方秘匿性 (forward secrecy) をもつウェブサイトの正しい設定方法によると
解決策3. H2O を使う
これまで述べてきたように、これまでのウェブサーバの前方秘匿性のサポートはお粗末と言わざるをえません(他にも、マスターキーの強度が強力なセッションキーよりも弱いといった問題も存在します)。
そこで H2O ですよ!!!!
私たちが開発しているH2Oの最新バージョンは、これらの問題を全て解決しています。
h2o起動スクリプト
/etc/rc.d/init.d/h2oはh2oをリバースプロキシとして導入してみたをCopyしました。
#!/bin/bash
#chkconfig: 2345 85 15
#descpriction: h2o Web Server# source function library
. /etc/rc.d/init.d/functionsRETVAL=0
SERVICE_NAME=`basename $0`start() {
echo -n $”Starting : $SERVICE_NAME”
/usr/local/bin/h2o -c /home/ec2-user/ssl/h2o.conf &
RETVAL=$?
if [ $RETVAL == 0 ]; then
success
else
failure
fi
echo
}stop() {
echo -n $”Stopping $SERVICE_NAME: ”
pkill h2o
RETVAL=$?
if [ $RETVAL == 0 ]; then
success
else
failure
fi
echo
}case “$1″ in
start)
start
;;
stop)
stop
;;
*)
echo $”Usage: $0 {start|stop}”
exit 1
esacexit $RETVAL