ちょっとした目的のエントリです。
Apache HTTP Serverは、よく使うWebサーバーだと思いますが、基本的にオフィシャルサイトでは
ソースコードが配布されているので、Linuxなどではこれをコンパイルして使うことになります。
では、Windows版は?ということですが、いくつかの選択肢があります。
自分は、このうちApache Hausで提供されているものを使っています。
このエントリを書いている時点でのバージョンは、Apache 2.4.25が最新版なので、こちらを
ダウンロードします。
32bit用と64bit用があるので、OSに応じた方をダウンロードしてください。
自分の環境では、64bit用をダウンロードしました。Windows 10 64bitで確認しています。
で、こちらをCドライブ直下で展開します。今回は、次のようなパスになりました。
C:\httpd-2.4.25-x64-vc14-r1\Apache24
エクスプローラーで見ると、こんな感じ。
で、このまま起動…する前に、confディレクトリ配下にある設定ファイルを編集します。
httpd-2.4.25-x64-vc14-r1\Apache24\conf\httpd.conf
httpd.confの中に、SRVROOTという定義をした箇所があるので、こちらを実際にApacheを置いた
ディレクトリに変更しましょう。
Define SRVROOT "/Apache24"
今回は、次のように設定しました。
Define SRVROOT "/httpd-2.4.25-x64-vc14-r1/Apache24"
これで、Apacheを起動します。
C:\>cd httpd-2.4.25-x64-vc14-r1\Apache24\bin C:\httpd-2.4.25-x64-vc14-r1\Apache24\bin>httpd
「http://localhost/」で確認。
このApacheには、自己署名証明書が入っているので、この状態でもHTTPSが使用できます。
※セキュリティ警告はありますが
「https://localhost」にアクセス。
いいですね。
ところで、このHTTPSの設定なのですが、httpd.confの中にインクルードされています。
<IfModule ssl_module> #Include conf/extra/httpd-ssl.conf Include conf/extra/httpd-ahssl.conf SSLRandomSeed startup builtin SSLRandomSeed connect builtin </IfModule>
実際の定義は、「conf/extra/httpd-ahssl.conf」に書いてあるようですね。
で、「conf/extra/httpd-ahssl.conf」には次の3つのVirtualHostの定義があり、この中でSSL証明書の
設定を書いています。
<VirtualHost _default_:443> SSLEngine on ServerName localhost:443 SSLCertificateFile "${SRVROOT}/conf/ssl/server.crt" SSLCertificateKeyFile "${SRVROOT}/conf/ssl/server.key" DocumentRoot "${SRVROOT}/htdocs" # DocumentRoot access handled globally in httpd.conf CustomLog "${SRVROOT}/logs/ssl_request.log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" <Directory "${SRVROOT}/htdocs"> Options Indexes Includes FollowSymLinks AllowOverride AuthConfig Limit FileInfo Require all granted </Directory> </virtualhost> <VirtualHost *:443> SSLEngine on ServerName serverone.tld:443 SSLCertificateFile "${SRVROOT}/conf/ssl/serverone.crt" SSLCertificateKeyFile "${SRVROOT}/conf/ssl/serverone.key" DocumentRoot "${SRVROOT}/htdocs" CustomLog "${SRVROOT}/logs/ssl_request.log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" <Directory "${SRVROOT}/htdocs"> Options Indexes Includes FollowSymLinks AllowOverride AuthConfig Limit FileInfo Require all granted </Directory> </virtualhost> <VirtualHost *:443> SSLEngine on ServerName servertwo.tld:443 SSLCertificateFile "${SRVROOT}/conf/ssl/servertwo.crt" SSLCertificateKeyFile "${SRVROOT}/conf/ssl/servertwo.key" DocumentRoot "${SRVROOT}/htdocs" CustomLog "${SRVROOT}/logs/ssl_request.log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" <Directory "${SRVROOT}/htdocs"> Options Indexes Includes FollowSymLinks AllowOverride AuthConfig Limit FileInfo Require all granted </Directory> </virtualhost>
初期設定としては、デフォルトのVirtualHost、「serverone.tld」と「servertwo.tld」のサーバー名を
持ったVirtualHostの3つが登録してあります。「serverone.tld」、「servertwo.tld」などが
使いたければ、hostsファイルに書くなりする必要がありますが。
それぞれ、SSLEngine、SSLCertificateFile、SSLCertificateKeyFileの設定がしてありますね。
初期状態で「https://localhost」にアクセスすると、以下の定義が使われることになります。
<VirtualHost _default_:443> SSLEngine on ServerName localhost:443 SSLCertificateFile "${SRVROOT}/conf/ssl/server.crt" SSLCertificateKeyFile "${SRVROOT}/conf/ssl/server.key" DocumentRoot "${SRVROOT}/htdocs" # DocumentRoot access handled globally in httpd.conf CustomLog "${SRVROOT}/logs/ssl_request.log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" <Directory "${SRVROOT}/htdocs"> Options Indexes Includes FollowSymLinks AllowOverride AuthConfig Limit FileInfo Require all granted </Directory> </virtualhost>
なお、自己署名証明書自体は、「conf/ssl」ディレクトリの配下にあります。
その他にHTTPSなVirtualHostを使いたければ、httpd-ahssl.confや、httpd.confでhttpd-ahssl.confを
読み込んだ後にVirtualHostを追加すればよいでしょう。
例えば、こんな感じで。ServerNameは、「my.webserver.com」とし、SSL証明書はデフォルトのもの(server.crtとserver.key)を
とりあえず使っています。
<VirtualHost *:443> SSLEngine on ServerName my.webserver.com:443 SSLCertificateFile "${SRVROOT}/conf/ssl/server.crt" SSLCertificateKeyFile "${SRVROOT}/conf/ssl/server.key" DocumentRoot "${SRVROOT}/htdocs" CustomLog "${SRVROOT}/logs/ssl_request.log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" <Directory "${SRVROOT}/htdocs"> Options Indexes Includes FollowSymLinks AllowOverride AuthConfig Limit FileInfo Require all granted </Directory> </Virtualhost>
あとは、hostsにこんな感じに書けば、「https://my.webserver.com/」でアクセスできるようになりますよ、と。
127.0.0.1 my.webserver.com
あとはVirtualHostディレクティブの内容を適当に変えていくのでしょう。