Webサーバー間通信内容暗号化(Apache+mod_SSL)

最終更新日: 2017.11.25

■概要

ユーザー名やパスワード等の機密情報をWebブラウザから入力する場合、盗聴される恐れがあるため、Webサーバー間の通信内容を暗号化する。
ここでは、Webサーバーにmod_sslを導入して、URLをhttp://〜ではなく、https://〜でアクセスすることによって、Webサーバー間の通信内容を暗号化するようにする。
なお、Webサーバーとの通信内容を暗号化するには、サーバー証明書を発行する必要があるが、ここでは、自作サーバー証明書を発行して各クライアントにインポートする。
※サーバー証明書を各クライントへインポートしなくても暗号化通信は行えるが、クライアントが通信するたび(Webブラウザ起動毎)にセキュリティの警告が表示されてしまう


■mod_sslインストール

[root@centos ~]# yum -y install mod_ssl ← mod_sslインストール

■WebサーバーSSL設定

(1)サーバー用秘密鍵・証明書作成
[root@centos ~]# cd /etc/pki/tls/certs/ ← ディレクトリ移動

[root@centos certs]# sed -i 's/365/3650/g' Makefile ← サーバー用証明書有効期限を1年から10年に変更

[root@centos certs]# make server.crt ← サーバー用秘密鍵・証明書作成
umask 77 ; \
        /usr/bin/openssl genrsa -des3 1024 > server.key
Generating RSA private key, 1024 bit long modulus
.................++++++
............++++++
e is 65537 (0x10001)
Enter pass phrase: ← 任意のパスワードを応答※表示はされない
Verifying - Enter pass phrase: ← 任意のパスワードを応答(確認)※表示はされない
umask 77 ; \
        /usr/bin/openssl req -utf8 -new -key server.key -x509 -days 3650 -out server.crt -set_serial 0
Enter pass phrase for server.key: ← 上記で応答したパスワードを応答※表示はされない
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:JP ← 国名応答
State or Province Name (full name) [Berkshire]:Kanagawa ← 都道府県名応答
Locality Name (eg, city) [Newbury]:Kawasaki ← 市区町村名応答
Organization Name (eg, company) [My Company Ltd]:centossrv.jp ← サイト名応答(なんでもいい)
Organizational Unit Name (eg, section) []: ← 空ENTER
Common Name (eg, your name or your server's hostname) []:centossrv.jp ← Webサーバー名応答
Email Address []:webmaster@centossrv.jp ← 管理者メールアドレス応答

[root@centos certs]# openssl rsa -in server.key -out server.key ← サーバー用秘密鍵からパスワード削除
Enter pass phrase for server.key: ← サーバー用秘密鍵・証明書作成時のパスワード応答※表示はされない
writing RSA key
※パスワードを削除するのは、Webサーバー起動時にパスワードを要求されないようにするため

(2)SSL設定
[root@centos certs]# vi /etc/httpd/conf.d/ssl.conf ← ApacheSSL設定ファイル編集
SSLCertificateFile /etc/pki/tls/certs/server.crt ← サーバー用証明書を指定

SSLCertificateKeyFile /etc/pki/tls/certs/server.key ← サーバー用秘密鍵を指定

#  General setup for the virtual host, inherited from global configuration
#DocumentRoot "/var/www/html" ← #を削除(コメント解除)
↓
DocumentRoot "/var/www/html"

POODLE SSLv3.0 脆弱性問題対処
#   SSL Protocol support:
# List the enable protocol levels with which clients will be able to
# connect.  Disable SSLv2 access by default:
SSLProtocol all -SSLv2
↓
SSLProtocol All -SSLv2 -SSLv3 ← SSLv2、SSLv3を無効化する

(3)Apache設定(AWStats対応)
Apacheアクセスログ解析(AWStats)で解析できるようにhttpsアクセスログをhttpアクセスログと同じファイルに同じフォーマットで出力するようにする。
[root@centos ~]# vi /etc/httpd/conf.d/ssl.conf ← SSL設定ファイル編集
# Use separate log files for the SSL virtual host; note that LogLevel
# is not inherited from httpd.conf.
ErrorLog logs/error_log ← ログファイル名変更
CustomLog logs/access_log combined env=!no_log ← ログ取得ディレクティブとログファイル名変更
LogLevel warn

■Apache設定反映

(1)Apache設定反映
[root@centos ~]# systemctl restart httpd ← httpd起動※CentOS7の場合

[root@centos certs]# /etc/rc.d/init.d/httpd restart ← Apache再起動※CentOS6の場合
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

(2)ポート443番のOPEN
ルーター側の設定でポート443番をOPENする。
※ルーターの設定は各ルーターのマニュアルまたはメーカー別ルーターポート開放手順を参照

ポートチェック【外部からポート開放確認】で「host名」にサーバー名(例:centossrv.jp)、「port番号」に443と入力して「ポートチェック」ボタン押下し、「ホスト=centossrv.jp ポート=443 にアクセスできました。」と表示されることを確認。


■WebサーバーSSL確認

https://サーバーIPアドレス/にアクセスして「セキュリティの警告」ウィンドウが表示され、"はい"ボタン押下でWebページが表示されればOK

なお、https://サーバーIPアドレス/にアクセスして「セキュリティの警告」ウィンドウが表示されたら、"証明書の表示"⇒"証明書のインストール"を行えば、以降、「セキュリティの警告」ウィンドウは表示されなくなる。


■関連コンテンツ




▲このページのトップへ戻る

Copyright© 2005-2017 fallenangels, All rights reserved.
ご自由にリンクしてください(連絡は不要です)
本ページへのご意見・ご要望、誤字・脱字・リンク切れ等のご連絡はこちらからお願いします