Apache で HTTPS (SSL) を使えるようにする




Apache で HTTPS (SSL) を使えるようにする方法は次の通り。

CentOS:2.6.18-8.el5
Apache:2.2.3
を使用しました。

まずは mod_ssl をインストールする。

# yum install mod_ssl
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
base                      100% |=========================| 1.1 kB    00:00
updates                   100% |=========================|  951 B    00:00
addons                    100% |=========================|  951 B    00:00
extras                    100% |=========================| 1.1 kB    00:00
Reading repository metadata in from local files
primary.xml.gz            100% |=========================| 230 kB    00:00
updates   : ################################################## 463/463
Added 91 new packages, deleted 0 old in 3.22 seconds
primary.xml.gz            100% |=========================| 104 kB    00:00
extras    : ################################################## 361/361
Added 1 new packages, deleted 0 old in 1.22 seconds
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for mod_ssl to pack into transaction set.
mod_ssl-2.2.3-11.el5_1.ce 100% |=========================|  12 kB    00:00
---> Package mod_ssl.i386 1:2.2.3-11.el5_1.centos.3 set to be updated
--> Running transaction check
--> Processing Dependency: libdistcache.so.1 for package: mod_ssl
--> Processing Dependency: libnal.so.1 for package: mod_ssl
--> Restarting Dependency Resolution with new changes.
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for distcache to pack into transaction set.
distcache-1.4.5-14.1.i386 100% |=========================| 8.8 kB    00:00
---> Package distcache.i386 0:1.4.5-14.1 set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
 mod_ssl                 i386       1:2.2.3-11.el5_1.centos.3  updates            84 k
Installing for dependencies:
 distcache               i386       1.4.5-14.1       base              119 k

Transaction Summary
=============================================================================
Install      2 Package(s)
Update       0 Package(s)
Remove       0 Package(s)

Total download size: 203 k
Is this ok [y/N]: y
Downloading Packages:
(1/2): mod_ssl-2.2.3-11.e 100% |=========================|  84 kB    00:00
(2/2): distcache-1.4.5-14 100% |=========================| 119 kB    00:00
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing: distcache                    ######################### [1/2]
  Installing: mod_ssl                      ######################### [2/2]

Installed: mod_ssl.i386 1:2.2.3-11.el5_1.centos.3
Dependency Installed: distcache.i386 0:1.4.5-14.1
Complete!
#

次に、サーバの秘密鍵を作成する。

# cd /etc/pki/tls/certs
# make server.key
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: [ 任意のパスフレーズを入力 ]
#
# openssl rsa -in server.key -out server.key
Enter pass phrase for server.key: [ 上で入力したパスフレーズ ]
writing RSA key
#

次に、上記の秘密鍵を使ってサーバの証明書を作成する。

# make server.crt
umask 77 ; \
        /usr/bin/openssl req -utf8 -new -key server.key -x509 -days 365 -out server.crt -set_serial 0
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]:[ 任意の都道府県名 ]
Locality Name (eg, city) [Newbury]:[ 任意の市区名 ]
Organization Name (eg, company) [My Company Ltd]:[ 任意の会社名 ]
Organizational Unit Name (eg, section) []:[ 任意の組織名 ]
Common Name (eg, your name or your server's hostname) []:[ サーバ名 ]
Email Address []:[ 任意のメールアドレス ]
#

これで HTTPS (SSL) の準備ができたので、
使用するように Apache の設定を変更する。

上で作成したサーバ用の秘密鍵 (server.key) を
/etc/pki/tls/private へ移動する。

# mv /etc/pki/tls/certs/server.key /etc/pki/tls/private

/etc/httpd/conf.d/ssl.conf で <Virtual Host> と </Virtual Host> の間に
SSLCertificateFile, SSLCertificateKeyFile があれば
次の通り編集して、無ければ追記する。

SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificateKeyFile /etc/pki/tls/private/server.key

設定の反映は httpd の再起動。

これで 443 ポートが Listen されるようになり、
HTTPS (SSL) が使用可能になった。