记一次LAMP服务HTTPS的设置经历

2020年4月5日20:24:43 发表评论

最近觉得有必要把博客升级成https了,升级成https之后,不仅可以防御中间人攻击,而且还有好看的小绿锁,好看又有用,何乐而不为?也是博主尿性,一直鸽到了今天。首先介绍”教科书式的步骤“,按照这个步骤小白也能轻松升级https。后面讲述在此次升级博主走的一些坑以及解决方案,升级遇到麻烦的同学也可以看看,希望这篇文章能解决大家的问题。

教科书版步骤

第一步 下载并申请证书

阿里云和腾讯云都有免费的SSL证书,很适合给个人博客弄。当然,不同的服务器使用的证书是不一样的,nginx、apache、tomcat等都有各自对应的证书。而LAMP(Linux Apache MySQL PHP)使用的自然是apache证书,先下载到本地。

第二步 配置服务器

1.首先用 yum install -y mod_ssl 命令查看是否安装mod_ssl模块

2.修改httpd.conf文件,在apache的安装目录下编辑Apache/conf/httpd.conf,按照注释操作。

#LoadModule ssl_module modules/mod_ssl.so  #删除行首的配置语句注释符号“#”加载mod_ssl.so模块启用SSL服务,Apache默认是不启用该模块的。
#Include conf/extra/httpd-ssl.conf  #删除行首的配置语句注释符号“#”。 

3.修改httpd-ssl.conf配置文件,编辑Apache/conf/extra/httpd-ssl.conf文件,在末尾添加如下文本:

<VirtualHost *:443>     
    ServerName   #修改为申请证书时绑定的域名www.YourDomainName1.com。                    
    DocumentRoot  /data/www/hbappserver/public          
    SSLEngine on   
    SSLProtocol all -SSLv2 -SSLv3 # 添加SSL协议支持协议,去掉不安全的协议。
    SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM   # 修改加密套件。
    SSLHonorCipherOrder on
    SSLCertificateFile cert/domain name1_public.crt   # 将domain name1_public.crt替换成您证书文件名。
    SSLCertificateKeyFile cert/domain name1.key   # 将domain name1.key替换成您证书的密钥文件名。
    SSLCertificateChainFile cert/domain name1_chain.crt  # 将domain name1_chain.crt替换成您证书的密钥文件名;证书链开头如果有#字符,请删除。
</VirtualHost>

#如果证书包含多个域名,复制以上参数,并将ServerName替换成第二个域名。 
<VirtualHost *:443>     
    ServerName   #修改为申请证书时绑定的第二个域名www.YourDomainName2.com。                    
    DocumentRoot  /data/www/hbappserver/public          
    SSLEngine on   
    SSLProtocol all -SSLv2 -SSLv3 # 添加SSL协议支持协议,去掉不安全的协议。
    SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM   # 修改加密套件。
    SSLHonorCipherOrder on
    SSLCertificateFile cert/domain name2_public.crt   # 将domain name2替换成您申请证书时的第二个域名。
    SSLCertificateKeyFile cert/domain name2.key   # 将domain name2替换成您申请证书时的第二个域名。
    SSLCertificateChainFile cert/domain name2_chain.crt  # 将domain name2替换成您申请证书时的第二个域名;证书链开头如果有#字符,请删除。
</VirtualHost>

ps:要把证书文件解压后上传到服务器。

4.重启apache服务 apachectl restart

到这里就能用HTTPS访问了。下面提以下博主踩过的坑。

博主踩坑记录

1.没有extra文件

看了上面步骤的同学都知道,第三步的时候要修改httpd-ssl.conf这个文件,然而我使用的是阿里云自带的wordpress服务,apache服务器没有那个目录(也没有另外说的那个),几寻无果的情况下,终于我选择了重新安装系统,下面简述重装系统的步骤。

i.把wordpress里面的文章备份一下。博主使用的是Duplicator这个插件,把你的wordpress备份出的两个文件下载过来(一个Install.html和一个*.zip)。

ii.重装系统(选择了预装LAMP)。阿里云会提供各服务器安装位置。

iii.把i步下载的两个文件上传到网站根目录(就是打开网页的那个目录)

iiii.访问/install.html这个文件,按照步骤安装即可。

2.能HTTPS访问之后还是没有小绿锁(只有一个感叹号)

出现这种问题有以下几种,大家可以逐一排除:

i.系统时间设置不对(时间不对的话验证证书的时候就会被认为过期了)

ii.域名设置不对

iii.页面有不是https访问的资源(头像、网站Logo、原来的资源等等)

博主的是第三种情况,如何发现是引用了不是https的资源呢?在chrome网页调试器可以找到(ctri+shift+i),找到症结后没费几分钟就搞定了。

其实在换成别的LAMP的时候我也是下了很大决心的,担心换了之后可能出现各种问题,像访问速度、资源加载、CDN等等的问题,那又得花很多时间来弄,甚至博主一度想要自己找个教程来弄(很费时间),幸好没有出什么别的问题,除了还原文章的时候Mysql填服务器的时候要填localhost的时候慌了一下,其他都感觉还好。

flyingsheep

发表评论