网站服务器配置:
- 操作系统:Red Hat Enterprise Linux release 8.0 (Ootpa)
- Web服务器:Apache/2.4.37 (Red Hat Enterprise Linux)
1、购买SSL证书
阿里云上有1年免费使用的证书,购买证书,绑定自己的域名,根据web服务器类型下载证书,解压,将证书文件拷贝到服务器目录:
/etc/httpd/conf/extra/
一共3个文件:
xxx_xxx.com_public.crt
xxx_xxx.com.key
xxx_xxx.com_chain.crt
2、安装ssl相关依赖包
yum install -y openssl.x86_64
yum install -y openssl-libs.x86_64
yum install -y mod_ssl.x86_64
由于我的云主机环境中没有mod_ssl,所以需要额外安装。
3、修改配置文件
修改文件:/etc/httpd/conf/httpd.conf
配置文件中取消如下两行的注释,如果没有,直接在末尾增加这两行:
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
修改文件:/etc/httpd/conf/extra/httpd-ssl.conf
<VirtualHost *:443>
ServerName www.xxx.com
DocumentRoot /var/www/html
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLHonorCipherOrder on
SSLCertificateFile /etc/httpd/conf/extra/xxx_xxx.com_public.crt
SSLCertificateKeyFile /etc/httpd/conf/extra/xxx_xxx.com.key
SSLCertificateChainFile /etc/httpd/conf/extra/xxx_xxx.com_chain.crt
</VirtualHost>
<VirtualHost *:443>
ServerName xxx.com
DocumentRoot /var/www/html
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLHonorCipherOrder on
SSLCertificateFile /etc/httpd/conf/extra/xxx_xxx.com_public.crt
SSLCertificateKeyFile /etc/httpd/conf/extra/xxx_xxx.com.key
SSLCertificateChainFile /etc/httpd/conf/extra/xxx_xxx.com_chain.crt
</VirtualHost>
修改 /etc/httpd/conf/httpd.conf 文件,在<VirtualHost *:80> </VirtualHost>中间,添加以下重定向代码,能够将http自动跳转到https。
<VirtualHost \*:80>
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
</VirtualHost>
4、开放443端口
确认云主机443端口有没有打开,某些云主机默认的安全策略,不允许访问443端口,需要在云主机控制台修改一下443端口的安全访问策略。
5、重启httpd服务
systemctl restart httpd.service
在浏览器中访问https地址,确认ssl证书安装成功。
6、遇到的问题:
(1)httpd 缺少 mod_ssl.so 模块,即缺少 /etc/httpd/modules/mod_ssl.so 文件。通过安装 mod_ssl.x86_64解决。
yum install -y mod_ssl.x86_64
(2)httpd配置ssl,重启后https无效,原因443端口未开放,在云主机上开放443端口即可。