推荐Let’s Encrypt(免费证书的有效期为3个月,但提供了自动更新证书的功能)
首先确保apache开启了LoadModule ssl_module modules/mod_ssl.so
再参考官方文档的一段内容:
Listen 443
<VirtualHost *:443>
DocumentRoot "项目入口文件目录"
ServerName 域名
SSLEngine on
SSLCertificateFile "路径/文件名.cert"
SSLCertificateKeyFile "路径/文件名.key"
</VirtualHost>
在apache的vhosts.conf
中添加以上代码,重启apache
这里直接上代码:
<VirtualHost *:80>
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/?(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
ServerName 域名
</VirtualHost>
告诉apache将该域名下80端口的所有请求跳转到443,重启apache
至此配置完成
在ubuntu环境下配置基本一样,开启apache ssl模块支持使用sudo a2enmod ssl
,然后重启service apache2 restart
补充: 后面在一个微信项目中发现以上做法的一个问题: 安卓手机在使用微信内置浏览器
QQ浏览器X5内核提供技术支持
访问可能会出现页面空白的情况,而在PC端的调试工具和IOS以及其他浏览器上未发现该问题 解决方法:修改虚拟机配置如下:`
Listen 443
DocumentRoot “项目入口文件目录” ServerName 域名 SSLEngine on SSLCertificateFile “路径/文件名.cert” SSLCertificateKeyFile “路径/文件名.key” SSLCertificateChainFile “路径/文件名.pem”
其实就是添加了一行SSLCertificateChainFile