###Apacheは敵だ!
最近ハマりまくっててハゲそう・・・
サイタマ先生はハゲる代わりに人間やめたしハゲるまでは追い込めってことですね。頑張ります。
###0.目標
ApacheをインストールしたEC2にHTTP/HTTPSで接続を行います。
/var/www/html/http_root
/var/www/html/ssl_root
こんな感じにそれぞれのDocumentrootを指定します。
###1.セキュリティグループ
プロトコル | ポート | ソース |
---|---|---|
TCP | 443 | 0.0.0.0/0 |
TCP | 80 | 0.0.0.0/0 |
TCP | 22 | 0.0.0.0/0 |
###2.Apache・mod_sslのインストール
ssl通信を利用するためにはmod_sslモジュールを追加します。
これをインストールすると ssl通信用のhttpd.conf である ssl.conf が作成されるので、sslはそれをメインに弄っていきます。
suod yum update -y
sudo yum install httpd -y
sudo yum install mod_ssl -y
###3.オレオレ証明書の作成
ELBにサーバ自己証明書をインストールしWEBサーバにHTTPS通信をしてみた
で以前証明書の作り方を書いているのでそちらを参考にしてください。
- pribate-key.pem --> SSLCertificateFile(サーバ証明書)
- pribate-key.crt --> SSLCertificateKeyFile(秘密鍵)
この2つのファイルを使用します。
###4./etc/httpd/conf.d/ssl.confの編集
先ほども書きました、要はhttpd.confです。
下記設定をバーチャルホストタブの中に記述します。
SSLCertificateFile /etc/pki/tls/certs/pribate-key.crt
SSLCertificateKeyFile /etc/pki/tls/private/pribate-key.pem
証明書までのパスを指定します。
DocumentRoot "/var/www/html/ssl443"
Port443で待ち受けるDocumentRootを指定します。
指定したDocumentRoot以下に接続できたことが確認できるページを何か用意しましょう。
###SSL接続テスト
この状態でEC2のパブリックIPに対して
https://IP-address
でアクセスしてみてください。
セキュアじゃないよと怒られhttpsに赤線で打ち消し線が入ると思いますが、用意したページが見れるはずです。
###5. /etc/httpd/conf/httpd.confの設定
最後にHTTP(Port80)で接続した際の待受けを設定します。
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /var/www/html/nossl
ServerName dummy-host.example.com
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
デフォルトのhttpd.confに上記の設定を追加(#外しと修正)をしました。
バーチャルホスト設定で:80で受けた際の挙動を示し、/var/www/html/nosslをDocumentrootとしています。
/var/www/html/nossl配下にHTTP通信とわかるようにページを作りましょう。
###6. HTTP接続テスト
サーバーのパブリックIPに接続してHTTP接続ができ、先ほど作成したHTTPページがデフォルトで表示されることを確認しましょう。
以上でSSLとHTTPの共存設定が完了しました。
これ出来なくてハゲそうだったけど出来て良かった。これで明日も頑張れる。
###参考
http://weblabo.oscasierra.net/apache-httpd22-ssl-centos6/
http://www.maruko2.com/mw/Apache/SSL%E8%87%AA%E5%B7%B1%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%A8mod_ssl%E3%81%AE%E8%A8%AD%E5%AE%9A