老左在之前的关于SSL证书安装文章中,基本上都是在Nginx环境中完成证书的申请和安装的,关于Apache环境的安装SSL证书比较少。还是前几天有一个网友项目是需要在Apache环境中需要配置自己申请的证书,则不好类似Let's Encrypt自动在他的面板中申请(好歹人家是购买的付费证书)。
不管我们是用的一键包LAMP,还是我们用的宝塔面板,其实安装的方法都是类似的,只不过有些配置文件并不是在特定的目录中,我们需要根据不同的配置WEB环境找到对应的文件路径。这个以后如果有遇到特定的面板环境或者一键包再去单独的分享,今天主要是分享下常规我们设定Linux Apache下修改证书配置SSL的方法。
第一、准备工作
1、备份很重要
如果我们确实不够熟悉,我们还是需要先备份好系统环境或者网站数据,确保系统万一搞坏掉,还可以恢复数据。或者我们可以先在类似的测试环境中测试,熟练工后在到生产环境操作。
2、申请SSL证书
这里我们无论申请免费证书,还是付费证书,我们一般会申请到一个SSL证书包,其中包括有Apache、Nginx等几个环境的证书。这里我们肯定只需要用到Apache环境的证书,里面有3个文件(2个.crt和1个.key文件)。
3、证书上传
将三个证书文件上传到我们对应的管理目录中,这里我们放到apache/conf/ssl目录中。
第二、修改配置文件
httpd.conf
我们需要修改这个配置文件,将两处文件前面的#去掉。
#LoadModule ssl_module modules/mod_ssl.so
#Include conf/extra/httpd-ssl.conf
后面如果我们有出现shmcb报错问题,可以参考"解决"SSLSessionCache: 'shmcb' session cache not supported"问题"文章,然后将"LoadModule socache_shmcb_module modules/mod_socache_shmcb.so"前面的#备注表示去掉掉。
第三、添加证书配置
extra/httpd-ssl.conf
这里我们需要httpd-ssl.conf文件中配置证书了。
VirtualHost _default_:443
找到这个脚本位置,直接下面添加
DocumentRoot "/www/wwwroot/www.laobuluo.com"
ServerName www.laobuluo.com:443
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLHonorCipherOrder on
SSLCertificateFile /www/server/apache/conf/ssl/laobuluo.com.crt
SSLCertificateKeyFile /www/server/apache/conf/ssl/laobuluo.com.key
SSLCertificateChainFile /www/server/apache/conf/ssl/laobuluo.com_bundle.crt
参考类似的,然后将我们服务器中站点对应的目录和证书目录替换成我们自己的文件。一共有三个证书文件。
同时,我们需要将下面几处"SSLCertificateFile"、"SSLCertificateKeyFile"前面本来固定的证书路径前面备注加上#,因为我们上面都加上了。
第四、重启Apache生效
service httpd restart
这个具体还需要看我们系统重启命令,有的不是这样的。重启之后检查是否生效。且默认http不自动跳转到https,我们需要在当前站点的.htaccess中设定(Apache修改.htaccess文件实现强制HTTPS地址访问)。