Windows+ApacheでSSLを有効にする方法

Windows+ApacheでSSLを有効にする方法

Posted at December 3,2013 1:23 AM
Tag:[Apache, SSL]

Windows+ApacheでSSLを有効にする方法を紹介します。

1.はじめに

WindowsにApacheを単独でインストールすると、http://~でローカルPCのファイルにアクセスできるようになりますが、https://~では、次のような読み込みエラーになってアクセスすることができません。

(クリックで拡大)
読み込みエラー

ちなみにXAMPPではデフォルト状態でhttpsアクセスできるようです。

ということで、Windows上でhttps://~でローカルPCのファイルにアクセスできるようにする手順を解説します。

httpsでアクセスできるようにするためには、Apacheに同梱されているopenssl.exeを使って秘密鍵・公開鍵・証明書を作成する必要があります。

利用しているApacheのバージョンは2.4.7です。Apacheは「C:\Apache24」にインストールした状態で説明を進めます。

なお、前提としてSSL対応のApacheを利用する必要があります。その部分についての説明はこのエントリーでは省略していますが、今回利用したApacheのダウンロードについて、最後の方で解説しています。

2.秘密鍵(server.key)の生成

Apacheインストールディレクトリのbinに移動して、以下のコマンドを実行します。

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

実行イメージ

C:\Apache24\bin>openssl.exe genrsa -out ..\conf\server.key
Loading 'screen' into random state - done
Generating RSA private key, 1024 bit long modulus
...............................++++++
.............................................++++++
e is 65537 (0x10001)

これでC:\Apache24\confに秘密鍵(server.key)が生成されます。

ネットで調べたところ、実行するコマンドパラメータの違いでパスワードを求められたり、パスワードの解除などの手順が必要みたいですが、ここで示す方法であればそれらの手順は不要となります。

3.公開鍵(server.csr)の生成

2項と同じディレクトリで以下のコマンドを実行します。

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(別の組織名)

について入力を求められるので、適当な内容を入力します(以下赤色部分)。最後の2項目は必須ではないため入力不要です。

実行イメージ

C:\Apache24\bin>openssl.exe req -new -key ..\conf\server.key -out ..\conf\server
.csr -config ..\conf\openssl.cnf
Loading 'screen' into random state - done
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) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:City
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Company
Organizational Unit Name (eg, section) []:Section
Common Name (e.g. server FQDN or YOUR name) []:127.0.0.1
Email Address []:foo@bar.com
 
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

これでC:\Apache24\confに公開鍵(server.csr)が生成されます。

4.証明書(server.crt)の生成

2項と同じディレクトリで以下のコマンドを実行します。

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

実行イメージ

C:\Apache24\bin>openssl.exe x509 -in ..\conf\server.csr -out ..\conf\server.crt
-req -signkey ..\conf\server.key -days 365
Loading 'screen' into random state - done
Signature ok
subject=/C=JP/ST=Tokyo/L=City/O=Company/OU=Section/CN=127.0.0.1/emailAddress=foo@bar.com
Getting Private key

これでC:\Apache24\confに証明書(server.crt)が生成されます。

5.httpd-ssl.confの修正

C:\Apache24\conf\extra\httpd-ssl.confの以下の赤色部分を修正し、ドキュメントルートを適切な内容にします。

…前略…
#   General setup for the virtual host
DocumentRoot "c:/Apache24/htdocs"
…後略…

今回のサンプルでは修正せずにそのまま使っています。

6.httpd.confの修正

C:\Apache24\conf\httpd.confを任意のエディタで開き、以下の行を修正します。

mod_sslを有効にします。

修正前

#LoadModule ssl_module modules/mod_ssl.so

修正後

LoadModule ssl_module modules/mod_ssl.so

また、httpd-ssl.confを読み込むようにします。

修正前

#Include conf/extra/httpd-ssl.conf

修正後

Include conf/extra/httpd-ssl.conf

修正後、Apacheを再起動します。

7.ブラウザでアクセス

「危険性を理解した上で接続するには」をクリック。

ブラウザ

「例外を追加」をクリック。

危険性を理解した上で接続するには

「セキュリティ例外」を承認をクリック。

例外を追加

これで表示されました。

SSLアクセスで表示

8.SSL対応のApacheのダウンロード

今回使ったSSL対応のApacheは以下です。

http://www.apachelounge.com/download/win32/

Apache Lounge」のページにアクセスして、左側にある「Downloads」をクリック。

Apache Lounge

左側にある「VC10 Win32」をクリック。

Downloads

「httpd-2.4.7-win32-ssl_0.9.8.zip」をクリック

VC10 Win32

9.その他

Apache起動時、httpd-ssl.confで以下のエラーが発生しました。

C:\Apache24\bin>httpd
AH00526: Syntax error on line 76 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-ssl.confの以下の行をコメントアウトしました。

修正前

#   Inter-Process Session Cache:
#   Configure the SSL Session Cache: First the mechanism 
#   to use and second the expiring timeout (in seconds).
#SSLSessionCache         "dbm:c:/Apache24/logs/ssl_scache"
SSLSessionCache        "shmcb:c:/Apache24/logs/ssl_scache(512000)"
SSLSessionCacheTimeout  300

修正前

#   Inter-Process Session Cache:
#   Configure the SSL Session Cache: First the mechanism 
#   to use and second the expiring timeout (in seconds).
#SSLSessionCache         "dbm:c:/Apache24/logs/ssl_scache"
#SSLSessionCache        "shmcb:c:/Apache24/logs/ssl_scache(512000)"
#SSLSessionCacheTimeout  300
関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)