要实现Apache服务器不同域名部署不同SSL证书,您需要支持SNI(Server Name Indication),也就意味着您需要满足以下条件:
(1)apache 2.2.12以上版本
(2)openssl 0.9.8f以上版本
首先您需要知道如何在Apache上部署SSL证书,请查阅Apache SSL证书部署指南。
下面来看下Apache服务器如何实现不同域名部署不同SSL证书。
您可以将所有站点配置部署在一个配置文件下,也可以分别添加在各个站点配置文件下。
参考以下配置:
<NameVirtualHost *:443>
listen 443
----------------------------------------------------------------------------------------
<VirtualHost *:443>
ServerName www.yoursite.com
DocumentRoot /var/www/site
SSLEngine on
SSLProtocol all -SSLv2 -SSLV3
SSLCipherSuite ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:!aNULL:!eNULL
SSLCertificateFile /path/to/2_domain1.com.crt
SSLCertificateKeyFile /path/to/3_doamin1.com.key
SSLCertificateChainFile /path/to/1_root_bundle.crt
</VirtualHost>
----------------------------------------------------------------------------------------
<VirtualHost 0.0.0.0:443>
DocumentRoot "/data/wwwroot/10php"
ServerName www.lxtkj.cn
SSLEngine on
SSLCertificateFile "/usr/local/apache55/conf/lxtkj/2_www.lxtkj.cn.crt"
SSLCertificateKeyFile "/usr/local/apache55/conf/lxtkj/3_www.lxtkj.cn.key"
SSLCertificateChainFile "/usr/local/apache55/conf/lxtkj/1_root_bundle.crt"
<Directory "/data/wwwroot/10php">
SSLOptions +StdEnvVars
AllowOverride All
Require all granted
Allow from all
</Directory>
</VirtualHost>
以上是另一个域名的配置参数,我不管你之前第一个域名是怎么配置,这是第二个域名配置安装上面的来绝对没有错的,因为这是我真是测试过的https://www.lxtkj.cn。其中 AllowOverride 一定要配置成All,如果是None那么在https访问的时候必须带index.php否则报404错误,因为为NOne隐藏不掉index.php。最后重启Apache服务器service httpd restart。