ApacheSSL環境の構築(OpenSSL + mod_ssl)


前回の記事で書き忘れたのですが、ApacheSSL通信を行う方法です。


Apache上でSSL通信を実現する為には、
まずSSL機能を実装しているベースプログラムとして
・OpenSSL
・SSLeay
の二つがあり、それらをApacheに組み込むモジュール
・mod_ssl
Apache-SSL
を選択してインストールする必要があります。
この内SSLeay + mod_sslの組み合わせは不可能です。
今回は技術的なトレンドに従いOpenSSL + mod_sslの組み合わせを選択しました。


OpenSSLはOSインストール時に、mod_sslLAMPスタックをインストールしたときにデフォルトで入っていたので、
鍵の作成とApacheの設定のみ行います。
まず鍵の生成です。

// 秘密鍵の生成
$ sudo openssl genrsa -des3 1024 > server.key

// 秘密鍵パスフレーズを無効(再起動時にパスフレーズの入力が求められる為)
$ sudo openssl rsa -in server.key -out server.key

// CSRの生成
$ sudo openssl req -new -key server.key > server.csr

// デジタル証明書の生成
$ sudo openssl x509 -in server.csr -days 365 -req -signkey server.key > server.crt

// 鍵&証明書の移動
$ sudo mv server.crt /etc/ssl/certs/
$ sudo mv server.key /etc/ssl/private/

CSRの生成時ですが、以下の事項を入力することになります。


国コード 例. JP:Country Name (2 letter code) [AU]:
都道府県 例. Tokyo:State or Province Name (full name) [Some-State]:
市町村区 例. Minato-ku:Locality Name (eg, city) :
組織名(会社名)Organization Name (eg, company) :
部署名:Organizational Unit Name (eg, section)
:
SSL証明を行うホスト名 例. example.com:Common Name (eg, YOUR name) :
Enterを押す:challenge password
:
Enterを押す:An optional company name []:


実際に認証局の証明書を取得する訳では無いので、別に正確に入力する必要はありません。


次にApacheの設定です。

$ vim /etc/apache2/sites-available/default-ssl

SSLEngine On
// 証明書のパス
SSLCertificateFile /etc/ssl/certs/server.crt
// 秘密鍵のパス
SSLCertificateKeyFile /etc/ssl/private/server.key

// SSLモジュールを有効にする
$ sudo a2enmod ssl

// 設定ファイルを有効にする
$ sudo a2ensite default-ssl

// 再起動
$ sudo apache2ctl graceful

なおopensslコマンドの引数についてはここを参考にしました。