EC2インスタンスに構築したアプリをHTTPSで利用したいので、オレオレ証明書を設定するメモ。
前提
- Apacheがインストール済
mod_ssl,opensslのインストール
Apacheのバージョンとインストールできるパッケージを確認する。
$ sudo yum list installed | grep httpd
$ sudo yum list available | grep ssl
Apache24の場合は、以下の通り(opensslはインストールされていた)。
$ sudo yum install mod24_ssl.x86_64 openssl
mod_sslがインストールされていることを確認する。
$ ls -l /etc/httpd/modules/ | grep ssl
-rwxr-xr-x 1 root root 215448 7月 19 09:08 mod_ssl.so
$ cat /etc/httpd/conf.modules.d/00-ssl.conf
LoadModule ssl_module modules/mod_ssl.so
LoadModuleの設定はインストール時に作成されていた。
鍵の作成
下記コマンドで、各種鍵を作成する。
$ openssl genrsa -out ca.key 2048
$ openssl req -new -key ca.key -out ca.csr
$ openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
秘密鍵の作成時の入力は以下を参照。
Apache + OpenSSL CSR生成手順 (新規)
作成された。鍵を配備する。
$ sudo cp -p ca.crt /etc/pki/tls/certs/
$ sudo cp -p ca.key /etc/pki/tls/private/
$ sudo cp -p ca.csr /etc/pki/tls/private/
restoreconを実行(よくわからないが。。とりあえず。。)
restorecon -RvF /etc/pki/
sslの設定
sslの設定を行う。
$ sudo vi /etc/httpd/conf.d/ssl.conf
下記を設定する。
Listen 443
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile /etc/pki/tls/private/ca.key
<Directory /home/vagrant/www/public>
AllowOverride All
</Directory>
DocumentRoot /var/www/html
ServerName www.myserver.test
</VirtualHost>
mod_rewriteの設定
一部は常にHTTPSにしたいので、mod_rewriteの設定を追加する。
今回はredmineとjenkinsを常にHTTPSでアクセスする。
$ sudo vi /etc/httpd/conf.modules.d/00-rewrite.conf
下記を設定する。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} www.myserver.test
RewriteCond %{REQUEST_URI} ^/redmine/.*$ [OR]
RewriteCond %{REQUEST_URI} ^/jenkins/.*$
RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>
httpdサービスを起動
設定内容を確認して、サービスを再起動する。
$ sudo service httpd configtest
$ sudo service httpd restart
ブラウザでhttpsでアクセスして、証明書が安全でないことを確認する(笑)