T

StartSSLをEngineYardで使う

SSLの設定といえば

次ハマったらTATOOしかない。

とそれなりの覚悟が必要なことでも知られていますが、子供もいるのでプールや銭湯に入れるように、ブログに書いて次からハマらないようにします。

StartSSLという格安のSSL証明書を発行するサービスがあります。いえ、嘘をつきました。格安じゃなくて、無料です。無料のSSLです。全てのブラウザでサポートされているわけではありませんが、サービスによっては十分なのではないでしょうか。

自分で設定する場合にはStartSSLのマニュアルを参照すればだいたい事足りるのですが、EngineYardのSSLはお作法が決まっているのでメモしておきます。

とはいえCSRの作成なんかはルーティン作業なので詳細は省きます。

# openssl genrsa -aes128 2048 > server.key
# openssl req -new -key server.key > server.csr

StartSSLは1024bitは脆弱すぎるので受け付けません。作成したcsrで証明書を取得します。

StartSSLの申し込み手続きが完了すると、ca_root.pem、ca.pem、ssl.crtが手に入ります。EngineYardのSSLの登録フォームも名称を除けば3つの入力欄があるのでちょうど良さそうですが、そうは問屋がビジネスしません。

ey-ssl-form

ここには、上からssl.crt、CSRを作成したときに用意した秘密鍵を入力します。秘密鍵はパスフレーズを設定してはいけませんので、解除しておきます。

# cp server.key server.key.back
# openssl rsa -in server.key > server_no_pass.key

残る一つの入力欄ですが、ここではまりました。直感的には中間証明書を入力すれば済みそうなのですが、それだけだと不十分です。EngineYardでは特殊なことをしない限りnginxを利用することになりますが、nginxは中間証明書をサポートしないので、サーバ証明書と結合してあげないといけません。StartSSLの中間証明書はこちらから入手できます。Class 1であればこちらをダウンロードします。最後の欄にはこの中間証明書と、先ほど入手したca.pemを結合します。

# cat ca.pem sub.class1.server.ca.pem > unite.csr

EngineYardのmainのChefが実行されると、この入力欄の一番上と一番下が結合されて1つのcrtファイルに加工されます。nginxの設定ファイルにはこの結合されたファイルが指定されることになります。ファイルは/etc/nginx/ssl/以下(/data/nginx/sslとしてバックアップ対象にもなっているようです)に保存されますので、もし心配な場合は上のコマンドをサーバ内で実行して自分で試してもいいでしょう。/etc/init.d/nginx configtestが通れば少なくとも起動はします。

とにかく、これで3つの入力欄が埋まりましたので、保存してアプリケーション画面でSSLを設定、Applyを実行すれば反映されます。正しく設定されたかどうかSSLのチェッカーなどで確認してみましょう。

Posted by on 3月 7, 2014 in EngineYard

コメントを残す