Apache 部署SSL数字证书及安全性设置

在旅途 2019-06-27

原文阅读:Apache 部署SSL数字证书及安全性设置

Apache 部署SSL数字证书及安全性设置

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 protected]](mailto:[email protected])
    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/

相关推荐