坚持以客户需求至上原则
中国老牌优质服务商

WDCP环境apache引擎下开启多站点SSL支持

文章又名:https多网站1个IP多个SSL证书的Apache设置办法
引言:

  • 老式的SSL证书是一个证书一个站点一个IP的一一对应,但后来有了改进;
  • 可以配置为一台服务器多个IP,分别对应不同的站点、不同的证书;
  • 还可以配置为一台服务器一个IP,多个端口号对应不同的站点、不同的证书;
  • 后来出现SNI(Server Name Indication服务器名称指示)技术,让https与http一样实现一台服务器多个虚拟站点,每个站点都可以对应不同的证书,无需多个IP、无需多个端口(全部都用https标准的端口号443),多个域名、泛域名都支持。

设置过程:

1.获取证书

::购买证书不多阐述,网上很多教程都讲过。

  linux下生成一个自签名证书
  下面的命令可以被用来产生一个自签名的证书。
  首先,生成2048位的加密私钥
  # openssl genrsa -out server.key 2048
  然后,生成证书签名请求(CSR),这里需要填写许多信息,如国家,省市,公司等
  # openssl req -new -key server.key -out server.csr
  最后,生成类型为X509的自签名证书。有效期设置3650天,即有效期为10年
  # openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
  将证书文件放置到httpd程序的conf目录下

2.配置httpd.conf文件

#启用ssl模块
#LoadModule ssl_module modules/mod_ssl.so
#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
#Include conf/extra/httpd-ssl.conf
弃掉前面的 # 号

3.配置extra/httpd-ssl.conf

可以新建一个文件替代,如新建文件extar/ssl_one.conf
相应的,在httpd.conf中将Include conf/extra/httpd-ssl.conf条目修改为Include conf/extra/ssl_one.conf
下面是实例:

Listen 443
NameVirtualHost *:443
SSLStrictSNIVHostCheck off

<VirtualHost _default_:443>
DocumentRoot "/usr/local/apache/htdocs/example.com"
ServerName example.com
ServerAlias subdomain.example.com
ServerAdmin you@example.com
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLCertificateFile "/usr/local/apache/conf/server.crt"
SSLCertificateKeyFile "/usr/local/apache/conf/server.key"
SSLCertificateChainFile "/usr/local/apache/conf/1_root_bundle.crt"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/usr/local/apache/htdocs/example.com">
    AllowOverride All
    SSLOptions +StdEnvVars
</Directory>
</VirtualHost>

<VirtualHost *:443>
DocumentRoot "/usr/local/apache/htdocs/example2.com"
ServerName example2.com
ServerAlias subdomain.example2.com
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLCertificateFile "/usr/local/apache/conf/server2.crt"
SSLCertificateKeyFile "/usr/local/apache/conf/server2.key"
SSLCertificateChainFile "/usr/local/apache/conf/1_root_bundle2.crt"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/usr/local/apache/htdocs/example2.com">
    AllowOverride All
    SSLOptions +StdEnvVars
</Directory>
</VirtualHost>

说明:一个<VirtualHost>代表一个站点

4.重启apache

service httpd restart

5.说明:

  • wdcp v3版本以上亲测可用
  • centos 6.x,7.x设置方法相同
  • 多站点,有证书、没证书的站点放在一起,访问没证书的站点时会出问题,详细情况请你实践中寻找。
  • nginx 引擎下的设置方法:https://www.0-n-0.com/444.html
赞(10)

更专业 更快速 更方便

华夏名网VIP服务