OpenSSL+ApacheでHttpsアクセス
開発中リソースが漏洩しないようにするために以下を行います。
・OpenSSLを使いApache(httpd)への通信暗号化
・環境の公開先を制限するため、AWSのSecurityGroupによりフィルタリング(おまけ)
【構築後の画面】
ブラウザアクセス:https://【EC2 (WEB) のPublic DNS】/redmine
手順(OpenSSL+Apache+AWS)
①OpenSSLで鍵を作成後、Apacheにsslの設定を反映を行う(コマンド作業)②AWSのSecurityGroupに、フィルタリングの設定を行う (AWS作業)(※設定なしでもhttps通信は可能)
"必要なパッケージをインストール" # 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 を選択
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