Apache服务器SSL多站点设置步骤

  • A+
所属分类:实践经验

在Apache HTTP服务器上,一个IP地址建立多个虚拟主机站点后,如何给每个站点配置SSL证书,以提高站点网络传输的安全性,是站长不可或缺的工作。下面以阿里云ECS为例,完成Apache配置多个ssl 站点步骤:

Apache服务器SSL多站点设置步骤

1 在Apache服务器上开启443端口

ssl(https)访问需开启443端口。在ECS控制台上找到安全--防火墙,填加规则:

  • 应用类型:HTTPS
  • 协议:TCP
  • 端口:443

2 上传SSL证书文件到Apache服务器

为每个虚拟主机域名申请获取SSL证书文件

SSL证书有收费版和免费版,某些域名商提供在其处购买域名同时赠送SSL证书服务。每个域名的SSL证书申请后下载获取到本地,都会有三个文件:

  • *_public.crt:证书文件
  • *_public.crt:证书链文件
  • *.key:证书密钥文件

如在某处获处的文件后缀不同,需要转换后方可使用。

上传每个域名SSL证书(相对应三个文件)

可用putty等工具远程连接ECS后,在/usr/local/apache/(默认)目录下创建几个与域名相对应的文件夹。例:cert1,cert2,cert3

可用pscp等工具将每个域名SSL证书分别上传至刚创建的对应文件夹中。例:域名1SSL证书上传到cert1,域名2SSL证书上传到cert2,域名3SSL证书上传到cert3中。(各域名对应的文件夹的路径后面配置中要用到)。


3 修改httpd.conf文件

用putty等工具远程连接ECS后,用vim编辑httpd.conf (vim中按下ESC后“q”退出,"wq!"保存退出,"q!"不保存退出)vim /usr/local/apache/conf/httpd.conf(默认路径)

删除以下两行行首的配置语句注释符号"#"

#LoadModule ssl_module modules/mod_ssl.so

#Include conf/extra/httpd-ssl.conf

添加以下一行行首的配置语句注释符号"#"

ProxyPassMatch ^/(..php(/.)?)$ unix:/home/www/logs/php-fpm.sock|fcgi://127.0.0.1/

在httpd.conf末尾添加以下内容:(访问http时自动转让自https)

<VirtualHost *:80>
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
</VirtualHost>

4 修改httpd-ssl.conf文件

用vim编辑httpd-ssl.conf文件,vim /usr/local/apache/conf/extra/httpd-ssl.conf

删除以下几行行道的配置语句注释符号"#" # Listen 443 # SSLStrictSNIVHostCheck off # SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM # SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4 # SSLHonorCipherOrder on # SSLProtocol all -SSLv2 -SSLv3 # SSLProxyProtocol all -SSLv3 # SSLPassPhraseDialog builtin

在httpd-ssl.conf中为每个域名主机增加以下内容

<virtualHost *:443>
  DocumentRoot "/home/www/hdocs/dfsgwdg/wordpress"  #域名文件的路径#
  ServerName dlosfslg.cn   #域名名称#
  ServerAlias www.dlosfslg.cn   #域名别名#
  SSLEngine on
  SSLCertificateFile cert/www.dlosfslg.cn.crt  #域名SSL证书文件路径#
  SSLCertificateKeyFile cert/www.dlosfslg.cn.key  #域名SSL证书密钥文件路径#
  SSLCertificateChainFile cert/www.dlosfslg.cn_ca.crt  #域名SSL证书链文件路径#
<Directory "home/www/hdocs/dfsgwdg/wordpress">  #域名文件夹路径#
  Options FollowSymlinks
  AllowOverride All
  Require all granted
</Directory>
 ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/home/www/logs/php-fpm.sock|fcgi://127.0.0.1/home/www/hdocs/dfsgwdg/wordpress/  #换成你域名文件夹路径#
</VirtualHost>

#如有多个域名,就继续增加#

<virtualHost *:443>
    ....
  <Directory.....>
    ...
  </Directory>
...
</VirtralHost>

5 测试

修改httpd.conf和httpd-ssl.conf文件保存退出后,重启Apache服务器使SSL生效。

停止Apache服务

/usr/local/apache/bin/apachectl -k stop

启动Apache服务

/usr/local/apache/bin/apachectl -k start

运行中直接重启Apapche服务

/usr/local/apache/bin/apachectl -k restart

重启Apache后,在浏览中访问分别访问不同原域名时,网页地址栏出现小锁标志,表示SSL多站点安装成功。

aktoms

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: