StartSSL

オレオレ証明書をやめてStartSSLで無料の証明書を取得してNginxに設定してみた。

もともとWordPressの管理ページへのログインパスワードを平文で流したくないだけだったから自分がアクセスする時だけで良く、それでオレオレ証明書で済ませていたんだけど毎回警告が出てうざいので、とあるキッカケで入れてみた。

昔からRapidSSLが安いから気になっていたんだけど、サブドメインを乱立させてしまったので後悔している。ワイルドカードだとお高くなってどうせ自分しかセキュアに接続する必要ないからコストに見合わない。ドメイン1つで管理している人はRapidSSLも検討できると思う。

いろいろドメイン、サブドメインを持ってしまっているのでStartSSLで試してみることにした。基本的に無料のSSL証明書StartSSLを活用するの通りにできた。鍵を発行するときに sub domain が省略できないんだけどbase domainも同時にサポートされるようなのでサブドメイン管理していない人は適当にwwwとかで作っておけばいい気がする。

中間証明書の取得。

wget https://www.startssl.com/certs/ca.pem -O startssl.ca.pem
wget https://www.startssl.com/certs/sub.class1.server.ca.pem -O startssl.sub.class1.server.ca.pem

パスワードなしの鍵ファイルの作成。

openssl rsa -in blog.example.com_secure.key -out blog.example.com.key

中間証明書と結合。

cat blog.example.com.crt startssl.sub.class1.server.ca.pem startssl.ca.pem > blog.example.com-unified.crt

Windows XPとか知らん。TLSv1.1+。

ssl on;
ssl_certificate      /etc/nginx/certs/blog.example.com-unified.crt;
ssl_certificate_key  /etc/nginx/certs/blog.example.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:50m;

とあるキッカケとはhtml5とか勉強会なんだけど、SSLで256bitのアルゴリズムだとWebRTCのgetUserMediaの許可が最初しかでないらしい。今のところ自分がアクセスするところしかsslにしていないし、AES128が優先されているけど、何かあったときに使えるようにしておく。

でもタダは怖いのでまずは自分のアクセスだけで試すでござるの巻。