在旅途 2019-06-27
Apache作为最常见的一种Web服务器,其普及度、易用性及稳定性都非常高,Apache也可以部署基于HTTPS的安全Web服务器,本文介绍如何在Apache上部署签发的SSL数字证书。
私钥通常是在准备CSR证书请求文件时生成,使用openSSL生成存在CSR文件的同级目录中 - 生成CSR证书请求文件 ,使用在线工具会将随机生成的私钥+CSR发送到邮箱中,使用IIS生成CSR要求在完成证书请求后提取私钥 - SSL/TLS多种证书类型的转换。将CSR提交给infiniSign申请证书,将私钥自行妥善保管。
签发证书也就是经过CA验证过域名或者企业信息后所签发的域名证书,例如Web服务器会使用 www.yourdomain.com 作为主要网站,那么该证书验证的域名就是 www.yourdomain.com ,通过CA签发的证书需要购买数字证书,最低¥39/年的Comodo PositiveSSL就是一款的入门级SSL数字证书,立即前往购买
一个完整的证书链应该由证书 + 中级证书A + 中级证书B + ... +根证书构成,所以通常,由CA签发的证书压缩包中会有1个或者多个中级证书,另外多家CA的中级证书在官网上有下载,关于合并中级证书请参考:SSL证书链不完整导致浏览器不受信任
将第一部的私钥 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配置生效
和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>
目前已知的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
参考文章:
https://blog.longwin.com.tw/2014/11/apache2-nginx-disabled-sslv2-sslv3-2014/