网站访问http转成https

网站服务器配置:

  • 操作系统: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端口即可。

发表评论