SSLの設定をする

2016.3.18 (金)

SSL証明書はなんであんなに高価なんですかね。仕事でつかっている限り10万円って全然高くないんですが、これ個人だと結構痛い金額です。SSL証明書取得の手続きも面倒です。

CentOS6でSSLの設定をする

CentOS6ってmod_sslがデフォルトで入ってないんですかね。「yum list installed | grep mod_ssl」で確認。入ってないです。

# yum -y install mod_ssl

インストールをすると/etc/httpd/conf.dにssl.confという新しいファイルが作成されていますので、これを編集します。

# vi /etc/httd/conf.d/ssl.conf

SSL証明書などのパスとSSLを有効にするDocumentRootの設定をする

DocumentRoot "/home/user/www" # 77,78行目辺り
ServerName example.com:443
....
SSLCertificateFile /etc/httpd/conf.d/ssl/ssl_example.crt # 106行目辺り 証明書のパス設定
....
SSLCertificateKeyFile /etc/httpd/conf.d/ssl/ssl_example.key # 112行目辺り プライベートキーの設定
....
SSLCertificateChainFile /etc/httpd/conf.d/ssl/ssl_example_ca.crt # 123行目辺り 中間証明書の設定

プライベートキーと証明書、中間証明書の設定をすれば最低限大丈夫です。
忘れずにApache再起動

# service httpd restart

得に問題なければこれで終わり。SSLのテストなんかをやっておいて適切に暗号化されているのかを把握しておきましょう。
https://globalsign.ssllabs.com/

rewriteとかの設定

いろいろ設定しているとSSL側でのこの設定も必要になってくるので、昨今のアプリケーションを考えると入れておいた方がよさそう。記述する場所はの中だったらどこでもよさそう。

DocumentRoot "/home/prd_kurelife/www"
ServerName  kurelife.jp:443
....
<Directory "DUCUMENTROOT">
AllowOverride All
</Directory>
RewriteEngine On
RewriteOptions inherit

脆弱性

  • Heartbleed
  • Poodle (TLS)
  • Poodle (SSLv3)
  • FREAK
  • BEAST
  • CRIME

いろいろあるんですが、ssl.confではこのような設定で一応大丈夫。v3もダメなのです。
https://www.infocircus.jp/2015/03/18/apache-httpd-ssl-config-2015/

SSLProtocol -ALL -SSLv2 -SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2
SSLCipherSuite AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:!RC4:HIGH:!EXP:!IDEA:!SEED:!EDH:!aNULL:!eNULL
SSLHonorCipherOrder on
Header always set Strict-Transport-Security "max-age=315360000; includeSubDomains"

IPAからSSLのガイドライン出てます。

「SSL/TLSでBEASTを恐れてRC4を優先するのは危ない」という話しもあります。

セキュリティー関連でのいろいろ

全ページSSLのサイトというのは最近多いのですが、上記

Header always set Strict-Transport-Security "max-age=315360000; includeSubDomains"

は、サブドメインを含めたすべてのドメインに対して強制的にSSLをかける設定になります。
なので、セキュリティ上はそうかもしれないけど、かなり不便というものあります。
https://saba.omnioo.com/note/338/ssl%E3%81%AB%E5%8B%9D%E6%89%8B%E3%81%AB%E3%83%AA%E3%83%80%E3%82%A4%E3%83%AC%E3%82%AF%E3%83%88%E3%81%95%E3%82%8C%E3%82%8B/