Apache作为最常见的一种Web服务器,其普及度、易用性及稳定性都非常高,Apache也可以部署基于HTTPS的安全Web服务器,本文介绍如何在Apache上部署签发的SSL数字证书。
一、准备材料
1. CSR证书请求文件和私钥文件
私钥通常是在准备CSR证书请求文件时生成,使用openSSL生成存在CSR文件的同级目录中 - 生成CSR证书请求文件 ,使用在线工具会将随机生成的私钥+CSR发送到邮箱中,使用IIS生成CSR要求在完成证书请求后提取私钥 - SSL/TLS多种证书类型的转换。将CSR提交给infiniSign申请证书,将私钥自行妥善保管。
2. 签发证书
签发证书也就是经过CA验证过域名或者企业信息后所签发的域名证书,例如Web服务器会使用 www.yourdomain.com 作为主要网站,那么该证书验证的域名就是 www.yourdomain.com ,通过CA签发的证书需要购买数字证书,最低¥39/年的Comodo PositiveSSL就是一款的入门级SSL数字证书,立即前往购买
3. 证书链
一个完整的证书链应该由证书 + 中级证书A + 中级证书B + ... +根证书构成,所以通常,由CA签发的证书压缩包中会有1个或者多个中级证书,另外多家CA的中级证书在官网上有下载,关于合并中级证书请参考:SSL证书链不完整导致浏览器不受信任
二、安装部署
1. 单主机
将第一部的私钥 server.key、证书 server.crt、证书链 server-chain.crt 三个文件放入服务器中任意目录,编辑/etc/httpd/conf.d/ssl.conf
文件,配置以下代码(自行修改路径)
# 签发证书
SSLCertificateFile /etc/pki/tls/certs/server.crt
# 私钥
SSLCertificateKeyFile /etc/pki/tls/private/server.key
# 合并后的证书链
SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt
保存后重启httpd服务,使SSL配置生效
2. 多个虚拟主机
和Apache的80端口的Web虚拟主机配置类似,将三个文件放入指定目录后,编辑/etc/httpd/conf.d/ssl.conf
文件,配置以下代码(自行修改路径)
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificateKeyFile /etc/pki/tls/private/server.key
SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt
<Directory /var/www/html/subhost>
AllowOverride All
</Directory>
ServerAdmin [email@example.com](mailto:email@example.com)
DocumentRoot /var/www/html/subhost
ServerName www.yourdomain.com
</VirtualHost>
3. 安全性配置
关闭SSLv2和SSLv3的安全漏洞
目前已知的SSLv2和SSLv3安全漏洞需要关闭,可使用在线工具检查服务器部署中的SSLv2和SSLv3是否关闭,关闭方法如下:
Apache 2.2.22以前版本:SSLProtocol TLSv1
Apache 2.2.23及以后版本:SSLProtocol ALL -SSLv2 -SSLv3
Apache + mod_nss:NSSProtocol TLSv1.0,TLSv1.1
配置加密套件
推荐的简单配置(满足苹果ATS对SSL/TLS的安全检测要求)
SSLCipherSuite ECDH:AESGCM:HIGH:!RC4:!DH:!MD5:!aNULL:!eNULL;
兼容性配置
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder on
4. 注意事项
- XP不支持SNI单服务器多虚拟主机下证书部署
- 中级证书通常会在签发证书的邮件中提供
- 以上配置/etc/httpd/conf.d/ssl.conf中可以配置为全局,也可以在虚拟主机中配置
参考文章:
https://blog.longwin.com.tw/2014/11/apache2-nginx-disabled-sslv2-sslv3-2014/