Apache 資料一覧
SSLを使用する
2008/5/1更新
対応バージョン: 2.2.8
ApacheでSSLを使用するにはまずWebサーバの証明書を作り、それを設定ファイルで適切に指定することによって行う。
以下、手順を追って説明する。
Webサーバ証明書の秘密鍵生成
まずサーバ証明書の秘密鍵を生成する。
ここではDES3方式(鍵長1024bit)のRSA秘密鍵を生成する。
% openssl genrsa -out server.key -des3 1024 Generating RSA private key, 1024 bit long modulus .....................++++++ ................++++++ e is 65537 (0x10001) Enter pass phrase: ***** ← 秘密鍵のパスフレーズ Verifying - Enter pass phrase: ***** ← 秘密鍵のパスフレーズ再入力 % more server.key -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC,FC415C455FDE0363 AioXOIFL4FgvSUaMyFuYpiVGojp83KWlK1A48XVFaM10Ax3X1lsKgDgBZWSdLZw8 zkreIWlChvThDYVuG4tG5zqFC8SUkoLX/mt+9oNzLV2ebrY47U0PQ0Q27yvR2L8T : k+YTIKnp/iTx537D1WHzA3sFAsB1/3O7H+VDOs1YafIuf4qgkMv/srL7WkPUlFJ9 HlQExJ94R53PwDr3cFAEKYvuVPh9XlmLnHHUXdIBNPo7h+f1yRk+hw== -----END RSA PRIVATE KEY-----
Webサーバ証明書生成
続いてWebサーバのサーバ証明書を生成する。
まず認証局に提出するCSRファイルを作成する。
% openssl req -new -key server.key -out server.csr Enter pass phrase for server.key: ***** ← サーバ秘密鍵のパスフレーズ : Country Name (2 letter code) [JP]: ← 国名(例:JP) (*) 必須 State or Province Name (full name) []: ← 都道府県名(例:Tokyo) Locality Name (eg, city) []: ← 区市町村名(例:Chiyoda) Organization Name (eg, company) [Private]: ← 組織名/会社名 Organizational Unit Name (eg, section) []: ← 部署名 Common Name (eg, YOUR name) []: ← 組織の通称 (*) 必須 ... httpd.confのServerNameと合わせる Email Address []: ← メールアドレス Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: ← リターン An optional company name []: ← リターン % more server.csr -----BEGIN CERTIFICATE----- MIICczCCAdwCCQDwtET0MG5A7zANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJK UDEOMAwGA1UECBMFQ2hpYmExEDAOBgNVBAcTB0thc2hpd2ExEDAOBgNVBAoTB1By : keXTG6HtQwBLuHsXJdaYCOcJCNsxnMAVwziZX4eA8VcQn7+qjjx1JtvQAW80PUGl eaR9sd0HfA== -----END CERTIFICATE-----
CSRファイルが作成できたらそれを認証局に署名してもらう。
ここではテスト用としてプライベート認証局を利用してセルフサインを行う。
証明書の有効期間は365日とする。
% openssl x509 -in server.csr -days 365 -req -signkey server.key -out server.crt Signature ok subject=/C=JP/ST=Tokyo/L=Chiyoda/O=Private/CN=Private Web Service/emailAddress=www@private.jp Getting Private key Enter pass phrase for server.key: ***** ← サーバ秘密鍵のパスフレーズ % more server.crt -----BEGIN CERTIFICATE----- MIICczCCAdwCCQDwtET0MG5A7zANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJK UDEOMAwGA1UECBMFQ2hpYmExEDAOBgNVBAcTB0thc2hpd2ExEDAOBgNVBAoTB1By : keXTG6HtQwBLuHsXJdaYCOcJCNsxnMAVwziZX4eA8VcQn7+qjjx1JtvQAW80PUGl eaR9sd0HfA== -----END CERTIFICATE-----
関連資料・記事
Apacheの設定変更
SSLの設定は通常のhttpd.confからSSL専用の設定ファイルをincludeして使用する形になるのでまずhttpd.confの以下のコメントを外す。
#Include conf/extra/httpd-ssl.conf
次にhttpd-ssl.confを編集し、サーバ証明書の格納パスなどを適切に設定する。
: SSLCertificateFile "/usr/local/apache2/conf/server.crt" ← サーバ証明書 : SSLCertificateKeyFile "/usr/local/apache2/conf/server.key" ← サーバ証明書の秘密鍵 :
その他のSSL関連設定については基本的にデフォルトのままでよいが必要に応じて変更する。また一般的な設定については通常のhttpd.confと同じなのでここでは割愛する。
関連資料・記事
上記パスにサーバ証明書/秘密鍵を置く。
% sudo cp server.crt server.key /usr/local/apache2/conf
サーバ起動
設定が終わったらサーバを起動する。
% sudo service apache start
通常はサーバ起動時にパスフレーズの入力を求められるが、これを省略して自動起動させたい場合は多少セキュリティに難があるが以下のようにサーバ証明書の秘密鍵からパスフレーズを削除すればよい。
% mv server.key server.key.org % openssl rsa -in server.key.org -out server.key Enter pass phrase for server.key.org: ← サーバ証明書秘密鍵のパスフレーズ writing RSA key
確認
Webブラウザで「https://〜」としてアクセスできればOKである。