Apache
AWS
SSL
HTTPS

EC2上のApacheでHTTPとHTTPSを両方やりたい[SSL]

More than 1 year has passed since last update.

Apacheは敵だ!

最近ハマりまくっててハゲそう・・・

サイタマ先生はハゲる代わりに人間やめたしハゲるまでは追い込めってことですね。頑張ります。


0.目標

ApacheをインストールしたEC2にHTTP/HTTPSで接続を行います。

HTTP(DocumentRoot)
/var/www/html/http_root
HTTP(DocumentRoot)
/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はそれをメインに弄っていきます。

httpd/mod_ssl_install
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