在Ubuntu Apache 服务器上安装SSL证书
很过浏览器都已经将http协议的链接标记为不安全的链接,很多搜索引擎也把https协议作为收录的加权因子。将网站的http协议改为https协议即需要给服务器安装SSL安全证书。
本文的安装服务器为Ubuntu Apache服务器,服务器在阿里云上,因此使用的是阿里云的免费SSL证书。本文的服务器已安装OpenSSL。
本文档证书名称以domain name为示例,如证书文件名称为domain name_public.crt,证书链文件名称为domain name_chain.crt,证书密钥文件名称为domain name.key。
进入阿里云,在云安全中选择SSL证书。选择个人免费版,证书的有效期是1年。点击购买证书,无需付费。

购买后按要求填写证书备案信息,填写完成后下载证书,服务器选择Apache。 解压已下载到本地的Apache SSL证书文件。解压后的文件夹中有3个文件: domain name_public.crt(证书文件) 、 domain name_chain.crt (证书链文件)和 domain name.key(密匙文件)。证书名称可以更改,但是不要更改证书内容。将此三个证书上传到服务器的固定目录中,建议不要放到网站目录中。
修改Apache服务器httpd.conf配置文件(一般位于Apache的安装目录 Apache/conf中),找到以下参数,按照下文中注释内容进行配置。
#LoadModule ssl_module modules/mod_ssl.so #删除行首的配置语句注释符号“#”加载mod_ssl.so模块启用SSL服务,Apache默认是不启用该模块的。如果找不到该配置,请重新编译mod_ssl模块。#Include conf/extra/httpd-ssl.conf #删除行首的配置语句注释符号“#”。
视服务器配置情况可能还需要将DocumentRoot后面的目录地址和DocumentRoot下面<Directory>标签中的目录地址改为网站的目录位置。
修改httpd-ssl.conf配置文件(一般位于Apache的安装目录Apache/conf/extra中),按照下文中注释内容进行配置。 证书路径建议使用绝对路径。
<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>
注意,根据操作系统的不同,http-ssl.conf文件也可能存放在conf.d/ssl.conf目录中。同时需注意您的浏览器版本是否支持SNI功能,如果不支持,多域名证书配置将无法生效。
重启Apache服务器使SSL配置生效。在Apache的bin目录下执行以下命令:
(1)停止Apache服务:apachectl -k stop
(2)开启Apache服务:apachectl -k start
证书安装完成后可通过https访问网站检查证书是否安装成功。如果网站无法通过https正常访问,需确认安装证书的服务器443端口是否已开启或被其他工具拦截。