阿里云Apache服务器给Hexo博客配置https踩坑记录(不完整版)

在阿里云轻量级应用服务器上给Apache服务器配置SSL证书的踩坑经历。


为了给阿里云的Apache服务器装上SSL证书,重装了好几次系统,试过了CentOS7和Ubuntu12,在一连串的失败后(都是泪),终于在CentOS7下给Apache装上了SSL证书。

首先给出官方的安装教程,这个是万恶之源,建议你先阅读这个教程,先试试,可以就尽量按官方的方法(反正我是不行)

在尝试各种教程无果后,我向大神求助,在的帮助下顺利装好了SSL证书。

我在安装过程中使用的环境是

  • CentOS Linux release 7.3.1611 (Core)
  • Apache/2.4.6 (CentOS)
  • OpenSSL 1.0.2k-fips

请与自己的系统和软件版本进行对比,不同版本之间操作有差异。

1. 下载SSL证书到服务器上

我使用的方法是将SSL证书下载到自己的机器上,然后通过scp将证书传送到服务器上。建议你在apache安装目录下新建一个文件夹cert来存放证书,不过其实你放哪都行,只要你记得路径。我用的是/etc/httpd/ssl

1
scp filename.zip username@xxx.xx.xx.xx:/etc/httpd/ssl/

然后解压压缩文件夹,当然你也可以先解压再上传

1
sudo unzip filename.zip

2. 加载SSL模块

这一步踩了个大坑,官方说要找到/etc/httpd/conf/httpd.conf文件,找到以下内容去掉#

1
2
#LoadModule ssl_module modules/mod_ssl.so (如果找不到请确认是否编译过 openssl 插件)
#Include conf/extra/httpd-ssl.conf(删除行首的配置语句注释符号“#”,保存后退出)

然而我这边的实际情况是,根本找不到这两行内容,之后通过不断的重置系统反复尝试apache、openssl、mod_ssl的不同安装顺序和不同安装方法(yum和编译安装),都没能在这个配置文件中找到这两行,而后我又尝试了手动写上这两行,然后httpd就崩了。

大神的指导下,我发现,加载SSL的配置文件在不同的版本上是在不同的路径上的。而我的SSL加载模块的实际路径是/etc/httpd/conf.modules.d/00-ssl.conf,用vim打开后发现里面有这么一行。

1
LoadModule ssl_module modules/mod_ssl.so

加载SSL模块的配置文件不在httpd.conf上,而是在这个00-ssl.conf上,更重要的是,它前面并没有#注释,所以说,SSL模块早已被加载,这一步没有任何要修改的地方,当然,为了安全起见,你还是去看看。

3. 配置ssl.conf

还是一样先看官方说明

打开 apache 安装目录下 conf/extra/httpd-ssl.conf 文件 (也可能是conf.d/ssl.conf,与操作系 统及安装方式有关), 在配置文件中修改配置语句。

这里官方说明了在不同版本中配置文件可能不同,那么,为什么上一步不说???

我进入/etc/httpd/conf.d/ssl.conf文件中修改了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 添加 SSL 协议支持协议,去掉不安全的协议
SSLProtocol all -SSLv2 -SSLv3

# 修改加密套件如下(这里可以不改)
SSLCipherSuiteHIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM

SSLHonorCipherOrder on

# 证书公钥配置
SSLCertificateFile cert/filename_public.crt

# 证书私钥配置
SSLCertificateKeyFile cert/filename.key

# 证书链配置,如果该属性开头有 '#'字符,请删除掉
SSLCertificateChainFile cert/filename_chain.crt

然后重启apache就可以看到效果了(注意要自己加https://)

1
systemctl restart httpd

4. 将http自动跳转成https

/etc/httpd/conf/httpd.conf配置文件末尾加上:

1
2
3
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [R=301,L]

然后到/etc/httpd/conf.modules.d/00-base.conf中启动rewrite模块:

1
LoadModule rewrite_module modules/mod_rewrite.so(去掉#)

可能它已经被启动了,不过建议你还是去看看。

之后再重启apache就好了:

1
2
> systemctl restart httpd
>

总结

首先希望你也成功安装好SSL证书,网上的教程很多,但是都不一定能直接拿来用,版本不同操作就很大可能不同。但是几乎都是上面4个步骤,有可能配置文件不在同一个位置,需要你自己去找找。