1)首先给你篇参考文章,是我自己写的,<
https://cnzhx.net/blog/ssl-on-lamp-on-vps/>。这篇文章里面使用的是自己签发的证书。你只需要把其中自签发证书那一部分忽略,而把其中的证书文件部分,
SSLCertificateFile /etc/httpd/ssl/cnzhx.net.crt
SSLCertificateKeyFile /etc/httpd/ssl/cnzhx.net.key
替换成自己从 CA 那里下载过来的证书就可以了(其实就是自己指定文件位置和文件名)。
2)然后再说说虚拟主机配置文件的问题。第一,对于服务器来说,80 端口对应 http 而 443 端口对应 https。如果现阶段 80 端口的访问已经正常了,那么新增加一个针对 443 端口的配置就可以让服务器同时支持使用非加密和加密访问。
假设你的 80 端口的访问已经正常了。而配置文件就是你上面给出来的文件,在服务器上的路径
假设为(文件名是我乱写的,你可以根据需要修改;而路径需要看你的服务器 HTTPD 的配置),
/etc/httpd/conf/vhost_cnhap.conf
复制此文件并另存为,
/etc/httpd/conf/vhost_cnhap_ssl.conf
然后修改为下面的内容即可(蓝色字体是我修改的部分,IP 使用 <your-ip> 代替了;另请仔细看看中文注释;因为代码模式没法改颜色,所以使用普通文本模式了):
<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
NameVirtualHost <your-ip>:443
# ipv6 地址需要用方括号 [ ] 括起来
# NameVirtualHost [<your-ipv6-ip>]:443#
# 主机 1
# cnhap.org
#
<VirtualHost
<改成你的 IP>:
443>
SSLEngine On
SSLProtocol all -SSLv3
Header add Strict-Transport-Security “max-age=31536000″
SSLHonorCipherOrder On
SSLCompression off
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
# 下面这两行后半部分换成你自己的证书文件和密钥
SSLCertificateFile /etc/httpd/ssl/cnzhx.net.crt
SSLCertificateKeyFile /etc/httpd/ssl/cnzhx.net.key
ServerAdmin admin@cnhap.org
ServerName cnhap.org
ServerAlias www
# 非常感谢 cheers 的提醒,虽然测试显示无影响,但 Apache 文档如此要求
# 注意下面这行末尾不要带 /
DocumentRoot /srv/www/cnhap.org/html
<Directory "/srv/www/cnhap.org/html/">
Options FollowSymLinks
# 下一行这样设置就可以在网站文件的目录中使用 .htaccess
AllowOverride All
# 下一行是替代 Allow from all 的新机制
Require all granted
</Directory>
ErrorLog /srv/www/cnhap.org/logs/error
-ssl.log
CustomLog /srv/www/cnhap.org/logs/access
-ssl.log combined
ServerSignature Off
</VirtualHost>
</IfModule>完成后运行,
# apachectl configtest
看看是否有配置错误,如果没有错误就可以重启 Apache 服务来试试看你的加密配置是否正常(使用 https 访问)。