カスタム検索
CentOS/Linuxapache-ssl設定 〜CentOS4 サーバ編〜


HTTPサーバのapacheバージョン1にsslを組み込むには、mod_sslを別途組み込む必要がありましたが、apache2はデフォルトで、SSL/TLS対応になっているので、作業が多少楽になりました。 では実際に設定していきます。

Index 〜apache-ssl設定〜

1. OpenSSLインストール状況確認 | 2. apacheのインストール状況確認(--enable-so,--enable-ssl) | 3. 証明書&秘密鍵格納用ディレクトリの作成(ssl.crt,ssl.key) | 4. 秘密鍵の作成(server.key) |  5. 自己証明書の作成(server.crt) | 6.SSL起動(startssl)



1. OpenSSLインストール状況確認
〜apache-ssl設定〜

本環境では、OpenSSLがインストールされていたので、そのまま使用しましたが、インストールされていない場合、もしくは入れ直したい場合は、OpenSSLインストールをご参照下さい。
インストールされているかどうかについての確認方法は以下の通りです。

<rpmコマンドの場合>
# rpm -qa | grep openssl
openssl-devel-0.9.7a-43.10
openssl-0.9.7a-43.10
xmlsec1-openssl-1.2.6-3
※インストールされている時の出力例です。

<yumコマンドの場合>
# yum list openssl
Installed Packages
openssl.i686 0.9.7a-43.10 installed
Available Packages
openssl.i586 0.9.7a-43.16 base
openssl.i386 0.9.7a-43.16 base
openssl.i686 0.9.7a-43.16 base
※インストールされている時の出力例です。




2. apacheのインストール状況確認(--enable-so,--enable-ssl)
〜apache-ssl設定〜
 
OpenSSLをapacheで動かす為には、apacheをコンパイルする際にDSO対応させておき、sslモジュールを静的に組み込んでおく必要があります。
本環境では、apacheインストールの際に既にDSO対応とSSLモジュールの組み込みをしている為、この章は飛ばしていますが、もしapache側で対応していない場合は、対応する必要があ ります。
具体的な対策例としては以下の通りです。
※ssl対応でインストールしていたかについての確認は、/usr/local/apache2/conf配下にssl.confが存在しているか否かでも判断可能です。

<apache ssl,DSO対策方法>

# cd /usr/local/src
# tar xvfz httpd-2.0.59.tar.gz
# cd httpd-2.0.59
# ./configure --enable-so --enable-ssl
# make
# make install ※DSO対応(--enable-so), SSL対応(--enable-ssl)


apacheに関する引数の詳細については、apache configure引数についてをご参照下さい。



3. 証明書&秘密鍵格納用ディレクトリの作成(ssl.crt,ssl.key)
〜apache-ssl設定〜
 
SSL対応する事により、/usr/local/apache2/conf/httpd.conf には、以下のようにsslモジュールが読み込まれている事が確認できます。

# cat /usr/local/apache2/conf/httpd.conf
---略---
<IfModule mod_ssl.c>
Include conf/ssl.conf
</IfModule>
---略---


また、ここで呼び出している/usr/local/apache2/conf/ssl.conf には、通常以下の通り、証明書、秘密鍵を格納するディレクトリが指定されています。

# cat /usr/local/apache2/conf/ssl.conf
---略---
SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt
---略---
SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.key
---略---


格納場所やファイル名を変更したい場合は、上記内容を変更すれば可能ですが、今回はデフォルト環境に合わせた(このままの)状態で進めます。

では、/usr/local/apache2/conf配下に証明書格納用(ssl.crt)と秘密鍵格納用(ssl.key)ディレクトリを作成します。

# mkdir /usr/local/apache2/conf/ssl.crt
# mkdir /usr/local/apache2/conf/ssl.key


4. 秘密鍵の作成(server.key)
〜apache-sslインストール〜

秘密鍵格納用ディレクトリにうつり、秘密鍵を作成します。作成にはopensslコマンドを利用します。

# cd /usr/local/apache2/conf/ssl.key
# openssl genrsa -des3 -out server.key 1024

Generating RSA private key, 1024 bit long modulus
....++++++
.......++++++
e is 65537 (0x10001)
Enter pass phrase for server.key.secure:"パスワード入力"
Verifying - Enter pass phrase for server.key.secure:"パスワード再入力"


opensslのオプションについてですが、今回の例では、公開鍵の暗号化方式にRSA,暗号化方式を3DES,出力ファイルをserver.key,鍵の長さを1024ビットに設定しています。

上記作業にてserver.keyという秘密鍵ファイルが作成されました。

5. 自己証明書の作成(server.crt)
〜apache-sslインストール〜

自己証明書格納用ディレクトリにうつり、自己証明書を作成します。作成には秘密鍵同様、opensslコマンドを利用します。

# cd /usr/local/apache2/conf/ssl.crt
# openssl req -new -x509 -days 365 -key ../ssl.key/server.key -out server.crt

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) []:"サーバのFQDN"
Email Address []:"管理者メールアドレス"
-----
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:"パスワード入力"
An optional company name []:"パスワード再入力"


opensslのオプションについてですが、頭から順番にそれぞれCSR(署名要求)の作成、証明書要求ファイルの作成証明書要求ファイルの形式をX509に指定、有効期限の指定、秘密鍵ファイルの指定、自己証明書ファイル名の指定といった設定をしています。

上記作業にてserver.crtという自己証明書ファイルが作成されました。

6.SSL起動(startssl)
〜apache-sslインストール〜

ようやくSSL起動起動の準備ができました。apacheが既に起動している場合は、一旦プロセスを停止します。その後、apacheのstartオプションではなく、startsslオプションを実行します。

# /usr/local/apache2/bin/apachectl stop <- apacheが起動している場合のみ
# /usr/local/apache2/bin/apachectl startssl
Apache/2.0.59 mod_ssl/2.0.59 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide us with the pass phrases.

Server www.example.com:443 (RSA)
Enter pass phrase:"パスワード入力"

Ok: Pass Phrase Dialog successful.


パスワードは4.の際に入力したパスワードを利用します。プロセス起動時にパスワードを聞いてこない設定方法もあ りますが、それについてはあとで掲載したいと思います。



apacheのssl設定作業はこれで終了です。