2017年12月28日木曜日

[Windows]Apacheを常時SSLにする(mod_ssl)

これまでの手順


Windows版ApacheでWordPressがセットアップできたので、常時SSLに対応してみます。

やりたいこと

  • http で受けたリクエストを全て https で暗号化して返す。
  • 証明書は自己署名証明書(通称オレオレ証明書)。
  • WordPress のプラグインではなく、Apacheの機能(mod_ssl)で実装する。

ファイル構成

SSL用の設定ファイルは C:\Apache24\conf\extra\ssl.conf に準備されているので、これに従って設定します。
  • VirtualHost _default_:443 というディレクティブが記載されています。
  • 証明書:C:\Apache24\conf\server.crt
  • 秘密鍵:C:\Apache24\conf\server.key

openssl.exeが C:\Apache24\bin に準備されているので、これを使って秘密鍵と証明書の生成を行います。

http.conf から ssl_module を有効にし、conf\extra\httpd-ssl.conf を読み込む設定も行います。

秘密鍵(server.key)の生成

コマンドプロンプトで以下を実行します。

C:\> cd  C:\Apache24\bin

C:\Apache24\bin> openssl.exe genrsa -out ..\conf\server.key 2048

CSR(server.csr)の生成

引き続きコマンドプロンプトで以下を実行します。

C:\Apache24\bin> openssl.exe req -new -key ..\conf\server.key -out ..\conf\server.csr -config ..\conf\openssl.cnf

証明書に設定する以下の質問項目に答えます。
  • Country Name(国コード:日本の場合は"JP")
  • State or Province Name(都道府県)
  • Locality Name(市区町村)
  • Organization Name(組織)
  • Organizational Unit Name(部門)
  • Common Name(SSLを使うIPアドレスまたはサイト名)
  • Email Address(メールアドレス)
  • A challenge password(証明書を破棄する場合のパスワード)※オプション
  • An optional company name(別の組織名)※オプション

証明書(server.crt)の生成

引き続きコマンドプロンプトで以下を実行します。

C:\Apache24\bin> openssl.exe x509 -in ..\conf\server.csr -out ..\conf\server.crt -req -signkey ..\conf\server.key -days 365

これで必要な鍵がそろいました。

httpd.conf の修正

C:\Apache24\conf\httpd.conf を編集します。

①mod_ssl の有効化
mod_ssl の有効化 LoadModule ssl_module modules/mod_ssl.so   (コメントを解除)

②httpd-ssl.conf を読み込むようにする
httpd-ssl.conf の読み込み Include conf/extra/httpd-ssl.conf    (コメントを解除)

設定の確認(configtest)

設定の確認をするには次のようにします。

C:\Apache24\bin> httpd.exe -t

次のエラーが出ました。
AH00526: Syntax error on line 92 of C:/Apache24/conf/extra/httpd-ssl.conf:
SSLSessionCache: 'shmcb' session cache not supported (known names: ). Maybe you need to load the appropriate socache module (mod_socache_shmcb?).

httpd.conf の追加編集をします。

③socache_shmcb_module の有効化
mod_ssl の有効化 LoadModule socache_shmcb_module modules/mod_socache_shmcb.so (コメントを解除)

設定が終わったらApache を再起動します。

ブラウザでアクセス

安全な接続ではありません と表示されますが、アクセスすることまではできました。

エラー内容を表示し、例外を追加します。

無事アクセスすることができました。

常時SSL対応

最後に常時SSL対応にします。
全ての http アクセスを https にリダイレクトすれば OK です。

httpd.conf を次の様に修正します。
http アクセスを https にリダイレクト208 行目('Main' server configuration のコメント直下)に追記。

<VirtualHost *:80>
    <IfModule rewrite_module>
        RewriteEngine on
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
    </IfModule>
</VirtualHost>


設定の確認

C:\Apache24\bin>httpd.exe -t

C:\Apache24\bin>httpd.exe -S

チェックができたら Apache を起動。

これで常時SSLの対応ができました。

0 件のコメント:

コメントを投稿