H2Oの設定で手こずった点

結合しても証明書のエラーが出る

h2oはnginxのようにcat 証明書 CA証明書 中間CA証明書 > ssl.crtという感じで証明書を結合しなければなりません。ここで結合すると「証明書がなんかおかしいです」といったエラーが起こりSSLが使用できないという事案が起こりました。

とりあえず問題の結合された証明書を見てみると…

-----BEGIN CERTIFICATE-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END CERTIFICATE----------BEGIN CERTIFICATE-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END CERTIFICATE-----

これはダメですわ。ちゃんと改行しましょうね。

-----BEGIN CERTIFICATE-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END CERTIFICATE-----

これで正しく使用できるようになりました。

ApacheのようにSystemd(かUpstart)から起動できるようにする

ApacheやNginxではSystemdやUpstartから起動するのですが、h2oでは同じようなことができないようなので、自分でスクリプトを書く必要があります。
大学にある自分のサーバー(VineLinux)はh2oをUpstartを用いてデーモン化しています。
書いたら設定をリロードして使えるようにします。ここらへんを参照してください。

description "H2O Daemon"
author "hotcocoa <[email protected]>"

start on runlevel [2345]
stop on runlevel [016]

chdir /path/to/h2o
exec ./h2o -c h2o.conf
respawn

このように書けばOKかと思います。しかしUpstartはUbuntu 15.04からSystemdによって置換されてしまうのでこの手段は使えません。おそらくUbuntu 16.04 LTSにアップグレードするときに壁にぶつかるのではないでしょうか。
SystemdのUnitの書き方は次のような感じです。このUnitは現在動いている自宅サーバで使用しています。(おそらく間違えているかと思います。詳しい方教えてください)

# /etc/systemd/system/h2o.service
[Unit]
Description=H2O Daemon
After=hhvm.service

[Service]
PIDFile=/run/h2o.pid
ExecStart=/path/to/h2o -c path/to/h2o.conf

[Install]
WantedBy = multi-user.target

systemctl enable h2o.serviceで有効化したらsystemctl start h2o.serviceで使えるようになりますね。
※h2o.confでpidなどを正しく指定しないとこのUnitも動かないです。