拖了好几天一直懒得弄ssl证书,因为这服务器是一朋友闲置我拿来练手的,剩1个月到期。但晚上被大学同学叫出去喝酒,完了回来以后有点精神焦虑,索性把ssl证书给弄了缓解一下情绪。

获取ssl证书的步骤这里就不赘述。直接开始重点。


第一步,获取到的apahce2的证书应该是三个文件:domain.key, domain_chain.crt, domain_public.crt。这仨文件名是阿里云证书的格式。我看到也有叫domain_bundle.crt的,没关系,最后都是写一起的。

ssl证书文件

拿到证书文件以后,把这三个文件上传到/etc/apache2/ssl目录下,这里的ssl文件夹需要自己新建,名字可以用自己喜欢的,后面配置文件中记得路径同步修改就ok。也可以直接到/etc/apache2/ssl目录下直接用wget下载证书后解压。 ssl文件服务器位置


第二步:启用apache2的ssl模块

a2enmod ssl

第三步:apache2默认的ssl配置文件的路径在/etc/apache2/sites-available/default-ssl.conf。现在把ssl证书三个文件的路径添加到<VirtualHost *:443>的标签内。

SSLCertificateFile /etc/apache2/ssl/domain_public.crt SSLCertificateKeyFile /etc/apache2/ssl/domain.key SSLCertificateChainFile /etc/apache2/ssl/domain_chain.crt

网上很多教程写到这里就说可以保存退出了。但是要注意,如果你的网站根目录不是apache2默认的/var/www/html而是自定义的目录,那只加这3行是不行的!还需要把网站信息的DocumentRoot<Directory>的信息也配置进去。


第四步:现在需要把ssl配置文件用软链接映射到/etc/apache2/sites-enabled/目录,命令中的001-ssl.conf文件名可以取自己喜欢的。

ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/001-ssl.conf

如果不喜欢用软链接,也可以直接把default-ssl.conf文件复制一份到/sites-enabled/目录下。


第五步:重启apache2。

systemctl restart apache2

第六步:如果没有开防火墙(firewalld/iptables),那到上一步就结束了。如果开启了防火墙(我用的是firewalld),记得开放443端口。

# 开放端口
firewall-cmd --add-port=443/tcp --permanent
# 防火墙重载
firewall-cmd --reload