不得不说,上个SSL,我都快写了7 8篇文章了,而且我觉得是有必要的,这样才能讲的更清楚点。
还有一点,如果你站点也是跟本站一样,使用的是虚拟类型的空间或者主机,可以参考这篇文章《给衡天主机的虚拟主机配置安装添加SSL证书教程来了。》,因为大部分的虚拟空间/主机都是有快捷入口的。
而对于买的是云主机/轻量服务器/服务器这些的,那可以继续往下看了。
首要条件(默认都已准备好)
已有SSL证书,并讲证书下载到本地已备使用。
您的Apache服务器上已经开启了443端口(HTTPS服务的默认端口)。
您的Apache服务器上已安装了mod_ssl.so
模块(启用SSL功能)。
操作步骤
1、找到Apache的安装目录,并在该目录下创建cert目录,并将SSL证书的所有相关文件上传到该cert目录中。
2、开启SSL功能,打开Apache安装目录下conf文件夹的httpd.conf文件,找到以下内容并去掉#
#LoadModule ssl_module modules/mod_ssl.so #删除行首的配置语句注释符号“#”加载mod_ssl.so模块启用SSL服务,Apache默认是不启用该模块的。 #Include conf/extra/httpd-ssl.conf #删除行首的配置语句注释符号“#”。
3、打开Apache安装目录下conf/extra/httpd-ssl.conf
文件 (也可能是conf.d/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>
4、可选,修改httpd.conf文件,设置HTTP请求自动跳转HTTPS,找到Apache安装目录下的httpd.conf文件中的<VirtualHost *:80> </VirtualHost>
中间,添加以下301重定向跳转代码。
RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
以上的跳转代码并不是唯一的,有很多种的方法都可以实现,只不过上面只列举了其中的一种,更多的大家可以看这里,https://www.kx521.com/post/19.html
5、重启Apache服务器使SSL配置生效。
apachectl -k stop apachectl -k start