トップ  > サーバ設定:運用  > 各アプリケーションのインストール  > Webサーバ間通信内容暗号化(mod_ssl)

Webサーバ間通信内容暗号化(mod_ssl)  (最終更新日:2009/12/06)

URLがhttp://でアクセスしている時、通信データは平文でやり取りされています。認証でユーザ名やパスワードを入力した際、万が一盗聴されていると具合がよくありません。

ここでは、https://でアクセスし内容を通信データを暗号化するようにApacheを設定します。

暗号化にはOpenSSLを使用し、Apacheと連携させる為、mod_sslを導入します。

Apacheが導入されていること。

ここで取り扱う証明書は自己署名証明書、俗に言う「オレオレ証明書」になる為実際に公開する場合は注意が必要です。

mod_sslインストール

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

WebサーバSSL設定

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

[root@sv certs]# sed -i 's/365/3650/g' Makefile ← サーバ用証明書有効期限を1年から10年に変更
必要ない場合は無視して下さい。

[root@sv certs]# make server.crt ← サーバ用秘密鍵・証明書作成
umask 77 ; \
        /usr/bin/openssl genrsa -aes128 2048 > server.key
Generating RSA private key, 2048 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) [XX]:JP ← 国名入力(2文字の国名コード)
State or Province Name (full name) []:Tokyo ← 都道府県名入力
Locality Name (eg, city) [Default City]:Minato ← 市区町村名応答
Organization Name (eg, company) [Default Company Ltd]:rx-93dff.net ← 所属機関名(何でも良い)
Organizational Unit Name (eg, section) []: ← 所属(未入力でも良い)
Common Name (eg, your name or your server's hostname) []:www.rx-93dff.net ← Webサーバ名入力
Email Address []:webmaster@example.net ← 管理者メールアドレス応答

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

[root@sv certs]#cd ← カレントディレクトリへ戻る
2.SSL設定
[root@sv ~]# vi /etc/httpd/conf.d/ssl.conf ← SSL設定用ファイル編集
#   Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate.  If
# the certificate is encrypted, then you will be prompted for a
# pass phrase.  Note that a kill -HUP will prompt again.  A new
# certificate can be generated using the genkey(1) command.
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
↓
SSLCertificateFile /etc/pki/tls/certs/server.crt ← サーバ用証明書を指定

#   Server Private Key:
#   If the key is not combined with the certificate, use this
#   directive to point at the key file.  Keep in mind that if
#   you've both a RSA and a DSA private key you can configure
#   both in parallel (to also allow the use of DSA ciphers, etc.)
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
↓
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" ← 「#」を削除しコメント解除

Apache設定反映

1.Apache設定反映
[root@sv ~]# /etc/rc.d/init.d/httpd restart ← Apache再起動
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]
2.ポート443番の開放

ルータ及びファイアウォールでポート443番を開放します。

ファイアウォールをサイト通りに設定している場合は以下の追加作業。

[root@sv ~]# vi iptables.sh
#----------------------------------------------------------#
# 各種サービスを公開する場合の設定(ここから)               #
#----------------------------------------------------------#

# 外部からのTCP443番ポート(HTTPS)へのアクセスを許可
# ※Webサーバを公開する場合のみ
#iptables -A INPUT -p tcp --dport 443 -j ACCEPT
↓
iptables -A INPUT -p tcp --dport 443 -j ACCEPT ← 「#」を削除しコメント解除

[root@sv ~]# ./iptables.sh ← ファイアウォール設定反映

ポートチェック【外部からポート開放確認】で「host名」にサーバ名(rx-93dff.net)、「port番号」に443を入力して「ポートチェック」をクリックし「アクセスできました」になること確認。

動作確認

https://サーバ名/にアクセスし、「この Web サイトのセキュリティ証明書には問題があります。」が表示される(Internet Explorerの場合)ので、「このサイトの閲覧を続行する (推奨されません)。 」をクリック。その後ページが表示されればOK。

Internet Explorerの場合、Internet Explorerで認証されない証明機関は証明書をインストールしても、アクセスするたび毎回表示されます。

証明書をインポートする際、「信頼されたルート証明書機関」で登録すると出なくなりすが自己責任で。(Firefoxの場合、例外として追加すればOK)