Apache配置SSL启用HSTS、配置加密套件顺序、禁用TLS1.0等使符合规范达到A+级别

avatar
avatar
tianzi
91
文章
1
评论
January 27, 202013:06:17 评论 4165字阅读13分53秒

使用MySSL(https://myssl.com/)进行SSL评级,我们固然希望看到如下结果

Apache配置SSL启用HSTS、配置加密套件顺序、禁用TLS1.0等使符合规范达到A+级别

But通常我们可能会遇到诸多问题,例如

Apache配置SSL启用HSTS、配置加密套件顺序、禁用TLS1.0等使符合规范达到A+级别

Apache配置SSL启用HSTS、配置加密套件顺序、禁用TLS1.0等使符合规范达到A+级别

Apache配置SSL启用HSTS、配置加密套件顺序、禁用TLS1.0等使符合规范达到A+级别

Apache配置SSL启用HSTS、配置加密套件顺序、禁用TLS1.0等使符合规范达到A+级别

今天我们主要讨论一下关于启用HSTS、配置加密套件顺序、禁用TLS1.0这三个问题,基本上可以达到A+级别,符合目前的相关规范

启用HSTS

评测提示:开启HSTS后能够提升到A+,具体请参考 《HTTPS安全与兼容性配置指南》

Nginx

在官方提供的相关指南中仅提供了Nginx的配置方法,Nginx服务器配置非常简单,只需要添加一行代码

最近发现有很多blog主在他们的blog中推荐我们MySSL,这让我们非常惊喜,在这里首先感谢一下这些blog主对我们MySSL的推广。
但是在看到 给启用 SSL 的站点推荐个 HTTPS 专用工具网站 的评论中,有一些blog主对如何评到A以及A+不是很理解,这里简单的说明一下。
首先要是,这个评分,并不仅仅是针对于证书的部署情况而言的,这是一个多方面综合的评级。其中包括了证书SSL协议加密套件漏洞不安全的外链等等。如果您的网站的评分已经达到A,那么没有被评到A+的最大的可能性就是没有使用HSTS,使用HSTS的方法很简单,只要在添加Strict-Transport-Security这个HTTP头部信息即可。
nginx服务器做说明:

add_header Strict-Transport-Security "max-age=31536000";

但有一点需要注意,Strict-Transport-Security中的max-age的时间不能小于15552000

Apache

下面提供Apache服务器的配置方法

首先启用headers模块,可以手动修改配置文件启动:

# Apache需加载mod_header库,一般位于httpd.conf文件,搜索mod_headers并取消注释。(已加载可跳过)
LoadModule headers_module modules/mod_headers.so

也可以在SSH中直接使用命令行启动:

sudo a2enmod headers

然后在SSL配置文件中(就是配置SSL证书的那个文件)添加代码

Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"

展开多虚拟主机配置后大致类似如下

	<VirtualHost _default_:443>
		ServerName abc.com:443
		DocumentRoot /var/www/html
		ErrorLog ${APACHE_LOG_DIR}/error.log
		CustomLog ${APACHE_LOG_DIR}/access.log combined
		SSLEngine on
		SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
		SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
		#添加1行HSTS配置
		Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
		<FilesMatch "\.(cgi|shtml|phtml|php)$">
				SSLOptions +StdEnvVars
		</FilesMatch>
		<Directory /usr/lib/cgi-bin>
				SSLOptions +StdEnvVars
		</Directory>
	</VirtualHost>

同Nginx,max-age=63072000中的参数时间不能小于15552000

配置符合PFS规范的加密套件

降级原因中提示:1. 没有优先使用FS系列加密套件,降级为B

配置指南中提示:1. 需要配置符合PFS规范的加密套件,推荐配置:
ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE ;

Apache

还是上面那个SSL配置文件,添加如下代码

SSLCipherSuite 配置加密套件顺序
SSLHonorCipherOrder on  #启用根据服务器配置选择加密套件顺序功能,这行放在上面下面均可

例如参考MySSL官方提供的配置,则两行代码为:

SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE
SSLHonorCipherOrder on

展开多虚拟主机配置后大致类似如下

	<VirtualHost _default_:443>
		ServerName abc.com:443
		DocumentRoot /var/www/html
		ErrorLog ${APACHE_LOG_DIR}/error.log
		CustomLog ${APACHE_LOG_DIR}/access.log combined
		SSLEngine on
		SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
		SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
		#添加2行证书配置
		SSLHonorCipherOrder on
		SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE
		#添加1行HSTS配置
		Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
		<FilesMatch "\.(cgi|shtml|phtml|php)$">
				SSLOptions +StdEnvVars
		</FilesMatch>
		<Directory /usr/lib/cgi-bin>
				SSLOptions +StdEnvVars
		</Directory>
	</VirtualHost>

禁用(关闭)过时的TLS 1.0版本

此问题不会导致SSL评级降级,而是会有PCI DSS不合规提示

并给出参考指南:

PCI安全标准委员会规定2018年6月30日之后,开启TLS1.0将导致PCI DSS不合规,具体参考:《更严格的PCI DSS合规标准》

Nginx

在官方提供的《更严格的PCI DSS合规标准》中提供了Nginx服务器的配置方法:

评估兼容性后,禁用TLS1.0

nginx,如下所示:

ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

调整之后别忘了再检测一下

Apache

阿帕奇配置也很简单,一句代码

依然在上面的SSL配置文件中添加代码:

SSLProtocol ALL -SSLv2 -SSLv3 -TLSv1

可以禁用过时的SSL 2、SSL 3、TLS 1版本

展开多虚拟主机配置后大致类似如下

	<VirtualHost _default_:443>
		ServerName abc.com:443
		DocumentRoot /var/www/html
		ErrorLog ${APACHE_LOG_DIR}/error.log
		CustomLog ${APACHE_LOG_DIR}/access.log combined
		SSLEngine on
		SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
		SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
		#添加3行证书配置
		SSLHonorCipherOrder on
		SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE
		SSLProtocol ALL -SSLv2 -SSLv3 -TLSv1
		#添加1行HSTS配置
		Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
		<FilesMatch "\.(cgi|shtml|phtml|php)$">
				SSLOptions +StdEnvVars
		</FilesMatch>
		<Directory /usr/lib/cgi-bin>
				SSLOptions +StdEnvVars
		</Directory>
	</VirtualHost>


展开SSL核心配置内容

SSLEngine on 
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.crt
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key 
SSLHonorCipherOrder on 
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE 
SSLProtocol ALL -SSLv2 -SSLv3 -TLSv1 
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"

以上修改apache配置文件后均不要忘记重启apache服务,例如(apache开启关闭重启方法命令很多)

sudo service apache2 restart

 

继续阅读
  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
avatar
  • 本文由 发表于 January 27, 202013:06:17
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: