OpenSSL+ApacheでHttpsアクセス

開発中リソースが漏洩しないようにするために以下を行います。
・OpenSSLを使いApache(httpd)への通信暗号化
・環境の公開先を制限するため、AWSのSecurityGroupによりフィルタリング(おまけ)

【アクセス方法のイメージ】

【構築後の画面】
ブラウザアクセス:https://【EC2 (WEB) のPublic DNS】/redmine

手順(OpenSSL+Apache+AWS

①OpenSSLで鍵を作成後、Apachesslの設定を反映を行う(コマンド作業)
AWSのSecurityGroupに、フィルタリングの設定を行う (AWS作業)(※設定なしでもhttps通信は可能)

【①Apachesslを設定】

"必要なパッケージをインストール"
# yum install -y make openssl-devel httpd mod_ssl

"opensslにより鍵を作成"
# cd /etc/pki/tls/certs/
# make server.crt
Enter pass phrase:(パスワード設定)
Verifying - Enter pass phrase:(パスワード再設定)
Enter pass phrase for server.key:(パスワード入力)
Country Name (2 letter code) [GB]:JP ← 国名応答
State or Province Name (full name) [Berkshire]:Tokyo ← 都道府県名応答
Locality Name (eg, city) [Newbury]:Setagaya ← 市区町村名応答
Organization Name (eg, company) [My Company Ltd]:solahito ← サイト名応答(なんでもいい)
Organizational Unit Name (eg, section) []: ← 空ENTER
Common Name (eg, your name or your server's hostname) []:solahito.xxx ← Webサーバー名応答
Email Address []:administrator@solahito.xxx ← 管理者メールアドレス応答

# openssl rsa -in server.key -out server.key
Enter pass phrase for server.key:(パスワード入力)

"鍵を配備"
# mv /etc/pki/tls/certs/server.crt /etc/pki/tls/certs/xxx.solahito.crt
# mv /etc/pki/tls/certs/server.key /etc/pki/tls/certs/xxx.solahito.key

"http(Apache)の設定"
# vi /etc/httpd/conf.d/ssl.conf
ー【編集内容(ここから)】ーーーーーー
##
## SSL Virtual Host Context
##
# 以下を全てコメントアウトします
#<VirtualHost _default_:443>
# ↑
#(コメントアウト)
# ↓
#</VirtualHost>
ー【編集内容(ここまで)】ーーーーーー

# vi /etc/httpd/conf.d/solahito.conf
ー【新規作成(ここから)】ーーーーーー
<VirtualHost *:443>

DocumentRoot "/var/www/html"
ServerName 【ec2 (WEB) のpublic DNS】:443

SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/xxx.solahito.crt
SSLCertificateKeyFile /etc/pki/tls/certs/xxx.solahito.key

ProxyPass /redmine http://【ec2 (開発環境) のPrivate IPs】/redmine
ProxyPassReverse /redmine https://【ec2 (開発環境) のPrivate IPs】/redmine

</VirtualHost>
ー【新規作成(ここまで)】ーーーーーー

"Apacheリスタート"
# service httpd restart
# chkconfig httpd on

【②AWSにSG(SecurityGroup)を設定】
1. AWSにログイン > EC2 を選択

2. Security Groups を選択

3. SG-a (WEB) を 設定

(詳細手順)
a. SG-a を選択 > Inbound を選択
b. Port range: に 443 を入力
c. Source: に 【外部IPアドレス】/32 を入力
d. 「Add Rule」を押下
e. 「Apply Rule Changes」を押下
※外部IPアドレスを調べるなら
  ex.) http://www.cman.jp/network/support/go_access.cgi

4. SG-b (開発環境) を 設定

(詳細手順)
a. SG-b を選択 > Inbound を選択
b. Port range: に 80 を入力
c. Source: に 【SG-aの Group ID】を入力
d. 「Add Rule」を押下
e. 「Apply Rule Changes」を押下
※Group IDを調べる方法
SG-a を選択 > Details を選択 > Group ID: の値をコピー

【その他】
ログアウト時にredmineのリダイレクト処理によって、http接続になって画面が表示されなくなる問題への対処
1. SG-a (WEB) のSecurityGroup に 80ポートを追加
2. ヘッダ情報を http→https に書き換える処理を設定

"http→https書き換え設定"
# vi /etc/httpd/conf.d/solahito.conf
ー【編集内容(ここから・先頭に追加)】ーーーーーー
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
ー【編集内容(ここまで・先頭に追加)】ーーーーーー

"Apacheリロード"
# /etc/init.d/httpd reload