Apache配置虚拟主机和多HTTPS服务


之前写过一篇是讲apache配置虚拟主机的文章:http://www.markdream.com/server/apache-vhost.shtml

多个虚拟主机的配置还是教程看上文,最近闲来无事,研究了一下apache的多虚拟主机的同时添加多个https的服务

事实上apache在配置虚拟主机的时候,我们配置httpd-vhosts.conf这个文件(我已经将注释去除掉了,如果你的apache版本在2.2.x以上你大可放心的覆盖,也可以运行,不过你需要修改下hosts文件)

 

NameVirtualHost *:80

<VirtualHost abc.com:80>
    DocumentRoot "D:\abc"
    ServerName abc.com
    <Directory "D:\abc>
        AllowOverride All
        Order Allow,Deny
        Allow from all
    </Directory>
</VirtualHost>

<VirtualHost xyz.com:80>
    DocumentRoot "D:\xyz"
    ServerName xyz.com
    <Directory "D:\xyz>
        AllowOverride All
        Order Allow,Deny
        Allow from all
    </Directory>
</VirtualHost>

<VirtualHost jx.com:80>
    DocumentRoot "D:\jx"
    ServerName jx.com
    <Directory "D:\jx>
        AllowOverride All
        Order Allow,Deny
        Allow from all
    </Directory>
</VirtualHost>

一般的配置也可以可以达到目的了,服务器上面我们大可不必修改hosts文件,只需要将ServerName改成你的域名就成,当然你的域名必须做好解析到本台服务器上。

 

好了,虚拟主机的配置过程是十分简单的,下来再看如何配置多个https服务。

首先请确保你下载的apache是支持openssl的,如果没有那么就不要往下看了。(点我下载apache

我们修改httpd.conf文件中的ssl设置项搜索这两行,请一行一行的搜

 

#LoadModule ssl_module modules/mod_ssl.so

#Include conf/extra/httpd-ssl.conf

将前面的“#”号删除掉。OK保存

 

下面我们再来生成证书,这里的教程我是以windows操作系统来演示的。

1、运行cmd,进入httpd的bin目录

 

cd C:\Program Files\Apache Software Foundation\Apache2.2\bin

2、如果你安装apache有openssl的话 那么在这个bin目录下会有一个openssl.exe的文件,我们来生成证书

 

 

set openssl_conf=./openssl.cnf
openssl genrsa 2048 -des3 > server.key

openssl req -new -key server.key > server.csr

在第二步需要设置相关参数,下面我列出来

Country Name (2 letter code) [AU]:CN #国家代码 建议CN
State or Province Name (full name) [Some-State]:GUANGXI #所在省份
Locality Name (eg, city) []:NANNING #城市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:YOURCOMP #你的公司名
Organizational Unit Name (eg, section) []:HELLO #组织或机构
Common Name (e.g. server FQDN or YOUR name) []:abc.com #申请证书的域名 重要
Email Address []:admin@abc.com #管理员邮箱

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456 #交换密钥
An optional company name []:abc.com #和你申请的域名一致就行了

再生成证书

 

#生成证书的有效期
openssl req -x509 -days 365 -key server.key -in server.csr > server.crt

你再看bin目录下面是不是有这三个文件了

 

crt

如果有了,OK我们的证书生成完毕。现在就开始配置https了,进入conf/extra文件夹中,找到一个httpd-ssl.conf的文件用文本工具打开它

 

Listen 443
#需要加上这段虚拟主机
NameVirtualHost *:443

AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl

SSLPassPhraseDialog  builtin

#请注意修改你的apache安装路径对应的log
SSLSessionCache        "shmcb:C:/Program Files/Apache Software Foundation/Apache2.2/logs/ssl_scache(512000)"
SSLSessionCacheTimeout  300

SSLMutex default

#去除原来的*:443
<VirtualHost xyz.com:443>
 DocumentRoot "d:/xyz_ssl"
    ServerName xyz.com:443
    SSLEngine on
	#最关键就是这里,我们上面生成的证书在这里就用到了,注意路径是否能够找到你的证书
	#我这里有两个https所以为了方便你会看到这里是另外一个证书 xyz.com的证书
	SSLCertificateFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/xyz_cret/server.crt"
	SSLCertificateKeyFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/xyz_cret/server.key"

    <Directory "d:/xyz_ssl">
        Options -Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

<VirtualHost abc.com:443>
 DocumentRoot "d:/abc_ssl"
    ServerName abc.com:443

    SSLEngine on
	#我这里有两个https所以为了方便你会看到这里是另外一个证书 abc.com的证书
	SSLCertificateFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/abc_cret/server.crt"
	SSLCertificateKeyFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/abc_cret/server.key"

    <Directory "d:/abc_ssl">
        Options -Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

 

我已经把注释都删掉了,如果不出什么意外的话,将你的证书路径找对就可以运行,请注意上面的中文注释!!!

好了,重启apache服务,我们来看下效果。

 

crt1

 

OK,重在爱好,动手勤思考。

 


发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

评论审核已启用。您的评论可能需要一段时间后才能被显示。