背景
Mac 10.10.4, AWS (EC2 Amazon Linux), Ruby on Rails, passenager
証明書生成
SSL証明書の生成はwikipediaのページを従えばいいでしょう。
ただし、最初からパスフレーズレスのキーを使って下さい。
openssl rsa -in server.key.back -out server.key
終わったら、以下の3つのファイルがあるはず
server.key, server.csr, server.crt
EC2での設定
- mod_sslをインストールしましょう
yum -y install mod_ssl
- SSL設定
# vim /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
- 証明ファイルを置いときましょう。
mkdir /etc/httpd/conf/ssl.key -m 700
mkdir /etc/httpd/conf/ssl.crt
mv server.key /etc/httpd/conf/ssl.key/
mv server.crt /etc/httpd/conf/ssl.crt/
chmod 400 /etc/httpd/conf/ssl.key
- 次はApacheファイルの設定
下の内容を/etc/httpd/conf/httpd.confに追加して下さい。
NameVirtualHost *:443
<VirtualHost *:443>
ServerName example.com
RailsEnv development
DocumentRoot /home/ec2-user/project/public
<Directory /home/ec2-user/project/public>
AllowOverride all
Options -MultiViews
</Directory>
SSLEngine on
SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
</VirtualHost>
ハマッたこと
- Railsの環境を設定しない場合
Error: no selected database
RailsEnv developmentがないとおそらくproduction環境と認識されちゃうので、databaseが見つからないエラーが出た。
- NameVirtualHostを忘れた
NameVirtualHost *:443がなければ
[warn] _default_ VirtualHost overlap on port 443, the first has precedence
default 80にオーバーラップしてしまった。