XAMPP

[XAMPP] SSL + バーチャルホストの設定

XAMPP

必要な分だけ秘密鍵(server.key)とサーバー証明書(server.crt)が作成できたら、次はXAMPPにSSL、 バーチャルホストの設定をする。

SSL + バーチャルホストを構築する環境は以下の通り。

OS :Windows 8 (x64)
XAMPP 1.8.1 (Installation Directory: C:\xampp)
Win64 OpenSSL v1.0.1e

設定で編集するファイルは下記3点のファイル。

  • httpd-ssl.conf (Directory: C:\xampp\apache\conf\extra\httpd-ssl.conf)
  • httpd-vhosts.conf (Directory: C:\xampp\apache\conf\extra\httpd-vhosts.conf)
  • hostsファイル (Directory: C:\WINDOWS\System32\drivers\etc\hosts)

 

1.httpd-ssl.conf を編集する

75行目からSSLバーチャルホストの設定となるが、まず先頭に「NameVirtualHost *:443 」を追記する。

次にデフォルトの設定は要らないので、「 _default_」を削除し、< VirtualHost *:443> に修正。

 

続けて

DocumentRoot "E:/Mysite" ←ドキュメントルートを指定
			   (Cドライブでも別ドライブでも任意の場所でOK)
ServerName example.com:443 ←「ドメイン名:443」
ServerAdmin webmaster@example.com ←「webmaster@ドメイン名」
ErrorLog "logs/example/error.log" ←「logs/ドメイン名/error.log」
< IfModule log_config_module>
	CustomLog "logs/example/access.log" combined
				← 「logs/ドメイン名/access.log」
< /IfModule>  

※ ServerNameにはドキュメントルートを開くドメイン名を指定。

※ logsフォルダ(C:\xampp\apache\logs)に新規フォルダを作成し、ドメイン名で名付ける。
(logsのサブフォルダ名はここではドメイン名にしてあるが、判りやすい名前であればなんでもOK)

 

更にサーバー証明書、秘密鍵、CustomLog (logsのサブフォルダ名を追記)を修正していく。

102行目 SSLCertificateFile "conf/ssl.crt/example.com.crt"
	(サーバー証明書 server.crt)

110行目 SSLCertificateKeyFile "conf/ssl.key/example.com.key"
	(秘密鍵 server.key)

228行目 CustomLog "logs/example/ssl_request.log" "%t %h %{SSL_PROTOCOL}x
	 %{SSL_CIPHER}x \"%r\" %b"

 

##
## SSL Virtual Host Context
##

NameVirtualHost *:443

<VirtualHost *:443>
    DocumentRoot "E:/Mysite"
    ServerName example.com:443
    ServerAdmin webmaster@example.com
    ErrorLog "logs/example/error.log"
    <IfModule log_config_module>
        CustomLog "logs/example/access.log" combined
    </IfModule>
    
    # SSL Engine Switch:
    SSLEngine on
    
    # SSL Cipher Suite:
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    
    # Server Certificate:
    SSLCertificateFile "conf/ssl.crt/example.com.crt"
    
    # Server Private Key:
    SSLCertificateKeyFile "conf/ssl.key/example.com.key"
        
    # SSL Engine Options:
    <FilesMatch "\.(cgi|shtml|pl|asp|php)$">
        SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory "C:/xampp/cgi-bin">
        SSLOptions +StdEnvVars
    </Directory>
    
    # SSL Protocol Adjustments:
    BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
    
    # Per-Server Logging:
    CustomLog "logs/example/ssl_request.log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>                                  

<VirtualHost *:443>
    DocumentRoot "E:/Myweb/blog"
    ServerName blog.example.com:443
    ServerAdmin webmaster@example.com
    ErrorLog "logs/blog/error.log"
    <IfModule log_config_module>
        CustomLog "logs/blog/access.log" combined
    </IfModule>
    
    # SSL Engine Switch:
    SSLEngine on
    
    # SSL Cipher Suite:
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    
    # Server Certificate:
    SSLCertificateFile "conf/ssl.crt/blog.example.com.crt"
    
    # Server Private Key:
    SSLCertificateKeyFile "conf/ssl.key/blog.example.com.key"
    
    # SSL Engine Options:
    <FilesMatch "\.(cgi|shtml|pl|asp|php)$">
        SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory "C:/xampp/cgi-bin">
        SSLOptions +StdEnvVars
    </Directory>

    # SSL Protocol Adjustments:
    BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0

    # Per-Server Logging:
    CustomLog "logs/blog/ssl_request.log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>    

 

2.httpd-vhosts.conf の編集

http でも接続できるように、httpd-vhost.conf も編集しておく。

19行目  「#NameVirtualHost *:80」のコメントアウトを外す。

次に localhost の設定を追記。
複数のバーチャルホストの設定をする場合、ServerName に一致しないドメインのアクセスがあると、一番最初に設定してあるバーチャルホストの設定が適応されるため、先頭にデフォルトの localhost の設定を記述しておく。

< VirtualHost *:80>
	DocumentRoot "C:/xampp/htdocs"
	ServerName localhost
< /VirtualHost> 

 

続いて下記を編集。

ServerAdmin postmaster@example.com ←「postmaster@ドメイン名」
DocumentRoot "E:/Mysite" ←ドキュメントルートを指定。
ServerName example.com ←「ドメイン名」
ErrorLog "logs/example/example.com-error.log"
	←「logs/ドメイン名/ドメイン名-error.log」
CustomLog "logs/example/example.com-access.log" combined
	←「logs/ドメイン名/ドメイン名-access.log」

 

最後にアクセス制限の設定する。

< Directory "E:/Mysite">  ←ドキュメントルートを指定。
	Options FollowSymLinks Includes ExecCGI
	AllowOverride All
	Require all granted
< /Directory> 

 

NameVirtualHost *:80

<VirtualHost *:80>
	DocumentRoot "C:/xampp/htdocs"
	ServerName localhost
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin postmaster@example.com
    DocumentRoot "E:/Mysite"
    ServerName example.com
    ErrorLog "logs/example/example.com-error.log"
    CustomLog "logs/example/example.com-access.log" combined
</VirtualHost>

<Directory "E:/Mysite">
	Options FollowSymLinks Includes ExecCGI
	AllowOverride All
	Require all granted
</Directory>

<VirtualHost *:80>
    ServerAdmin postmaster@example.com
    DocumentRoot "E:/Myweb/blog"
    ServerName blog.example.com
    ErrorLog "logs/blog/example.com-error.log"
    CustomLog "logs/blog/example.com-access.log" combined
</VirtualHost>

<Directory "E:/Myweb/blog">
	Options FollowSymLinks Includes ExecCGI
	AllowOverride All
	Require all granted
</Directory>

 

3.hostsファイルの編集

hostsファイルに、上記で追加したホストを追記して設定する。

hostsファイル(拡張子なし)は、「C:\WINDOWS\System32\Drivers\etc\」にあり、管理者権限で「メモ帳」を使用して編集する。

Windows 8 の場合は、スタート画面 >検索 >メモ帳 >メモ帳を右クリック >管理者として実行。
(hostsファイルは拡張子がないため、開く際にはファイルタイプを「すべてのファイル」を変更しないと表示されないので注意)

 

既に記述されている localhost の下に追記する。

# localhost name resolution is handled within DNS itself.
	127.0.0.1     localhost
	127.0.0.1	example.com
	127.0.0.1	blog.example.com
#	::1              localhost

 

4.Apacheを再起動

全ての設定が完了したら、Apacheを再起動する (起動させていなかった場合は、Apacheを起動する)

 

5.ブラウザで設定したホストにアクセスし動作確認をする

アドレス欄に設定したホストのURLを入力し、表示を確認する (事前に表示確認用のindex.htmlを用意しておくこと)

 

◆参考サイト

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>