» Linux ディストリビューション » CentOS » 機能拡張 » SSL

SSL 通信暗号化機能を導入する

 SSL 通信は、「クライアントとサーバー間のデータが盗聴・改竄される」などの脅威から保護するための暗号化機能です。 また、「接続先のサーバーが正規のサーバーであるか」、「接続元のクライアントが正規のクライアントであるか」など接続時のセキュリティチェックとしても利用することができます。


ここでの説明は、ウェブサーバーの構築が完了していることを前提としています。

パッケージのインストール

 SSL 通信暗号化パッケージは、yum コマンドを使用してインストールします。

[root@web ~]# yum install mod_ssl

[ CentOS 6 / CentOS 5 ]

パッケージインストール後の設定

 SSL 通信を行う際、サーバー証明書が必要になります。 また、サーバー証明書の作成には、サーバー秘密鍵・サーバー公開鍵が必要になります。

サーバー秘密鍵の保存先ディレクトリに移動する

[root@web ~]# cd /etc/pki/tls/certs/


サーバー秘密鍵を作成する

[root@web certs]# make server.key

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:パスワードを再入力する

サーバー秘密鍵からパスワードを削除する

[root@web certs]# openssl rsa -in server.key -out server.key

Enter pass phrase for server.key:サーバー秘密鍵のパスワードを入力する
writing RSA key

サーバー公開鍵の保存先ディレクトリに移動する

[root@web ~]# cd /etc/pki/tls/certs/


サーバー公開鍵を作成する

[root@web certs]# make server.csr

umask 77 ; ¥
        /usr/bin/openssl req -utf8 -new -key server.key -out server.csr
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]:Saitama [ 地域名 ]
Locality Name (eg, city) [Newbury]:Saitama [ 都市名 ]
Organization Name (eg, company) [My Company Ltd]:<Enter> [ 組織名 ]
Organizational Unit Name (eg, section) []:<Enter> [ 組織の部門名 ]
Common Name (eg, your name or your server's hostname) []:www.i2kt.com [ サーバー名(FQDN) ]
Email Address []:webmaster@i2kt.com [ メールアドレス ]

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:<Enter>
An optional company name []:<Enter>

サーバー証明書の保存先ディレクトリに移動する

[root@web ~]# cd /etc/pki/tls/certs/


サーバー証明書を作成する

[root@web certs]# openssl x509 -in server.csr -out server.pem -req -signkey server.key -days 365


サーバー秘密鍵・サーバー公開鍵・サーバー証明書のアクセス権限を参照モード(所有者のみ)に変更する

[root@web certs]# chmod 400 server.*


サーバー秘密鍵・サーバー公開鍵・サーバー証明書を確認する

[root@web certs]# ls -l server.*

-r-------- 1 root root 692 11月 19 21:15 server.csr [ サーバー公開鍵 ]
-r-------- 1 root root 887 11月 19 21:03 server.key [ サーバー秘密鍵 ]
-r-------- 1 root root 928 11月 19 21:17 server.pem [ サーバー証明書 ]

[ CentOS 6 / CentOS 5 ]

ウェブサーバーの再起動

 SSL に関するウェブサーバーの設定を変更します。

[root@web ~]# vi /etc/httpd/conf.d/ssl.conf

#   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/server.pem

#   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/certs/server.key

 設定を反映するため、ウェブサーバーを再起動します。

[root@web ~]# /etc/rc.d/init.d/httpd restart

httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

[ CentOS 6 / CentOS 5 ]