1 SSL证书优化建议
1.1 证书完整性
- 确认证书颁发机构的可信性:证书颁发机构(CA)的可信性非常重要,只有可信的CA才能确保证书的真实性和完整性。因此,应该选择信誉良好、受信任的CA颁发证书。
- 证书的有效期:证书的有效期是指证书可以被使用的时间段。过期的证书不能再被信任,因为证书颁发机构不能保证证书的完整性和真实性。因此,需要确保证书在使用期限内,并及时更新证书。
1.2 证书链
- 在配置SSL证书时,需要配置证书链,主要是为了保证证书的可信度和完整性。
- SSL证书链实际上是由证书颁发机构(CA)颁发的一系列证书,其中最后一张证书是网站服务器使用的SSL证书。客户端在建立与服务器的SSL连接时,需要验证服务器提供的SSL证书的有效性。证书链就是用来验证SSL证书的有效性,保证证书的可信度和完整性。
- 如果SSL证书链没有正确配置,客户端将无法验证证书的有效性,这会导致安全漏洞。因此,在配置SSL证书时,必须正确配置证书链,以保证证书的可信度和完整性。
1.3 加密套件与协议版本
在配置 SSL 证书时,需要选择安全性更高、强大的加密套件和协议版本,例如使用 AES 算法或者 ECDHE 密钥交换协议,同时应该禁用不安全的加密套件,如 MD5 和 RC4。此外,还应该使用支持 Perfect Forward Secrecy(PFS)的密钥交换协议,例如 ECDHE 和 DHE,以保护通信过程中的数据安全性。在选择证书时,建议选择由可靠的证书机构颁发的证书,并且及时更新证书以保证证书的有效性和安全性。另外,在 SSL 配置中,使用最新的协议版本,如 TLS1.2、TLS1.3,可以提高安全性和性能。
推荐使用套件和协议:
协议:TLSv1.0,TLSv1.1,TLSv1.2
套件:ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE
1.4 加密套件与SSL协议配置方法:
Tomcat
打开Tomcat 安装目录 > conf文件夹 > server.xml文件,在server.xml文件中找到 <Connector port=”443”
标签并修改以下参数:
修改协议如下SSLProtocol="TLSv1,TLSv1.1,TLSv1.2"
修改加密套件如下ciphers="ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE"
Nginx
修改nginx 配置文件nginx.conf 如下(默认配置文件一般是在/etc/nginx/目录下):
#修改协议如下ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
修改加密套件如下ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!A DH:!RC4;
Apache
打开Apache 安装目录下conf.d/ssl.conf 文件(也可能是conf/extra/httpd-ssl.conf,与操作系统及安装方式有关),在配置文件中查找以下配置语句:
#修改协议如下SSLProtocol all -SSLv2 -SSLv3
修改加密套件如下SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE
IIS
在Windows环境下,如果您想要修改SSL/TLS协议和加密套件,可能需要进行注册表修改,这个过程相对较为复杂。因此,我们建议使用 “IIS Crypto”工具来进行修改。
工具的下载地址为“https://www.nartac.com/Products/IISCrypto/Download”。
“IIS Crypto”工具的使用方法如下:
- 下载并打开“IIS Crypto”工具,进入工具后默认显示的是“Schannel”界面。点击左下角的“Best Practices”按钮,以应用推荐的配置。然后,点击右下角的“Apply”按钮,应用配置。
- 然后,您需要点击左侧菜单栏中的“Cipher Suites”选项卡,然后再次点击左下角的“Best Practices”按钮以应用推荐配置。最后,再次点击右下角的“Apply”按钮,使配置生效。
- 最后,重启服务器以使配置生效。
使用“IIS Crypto”工具可以使修改SSL/TLS协议和加密套件的过程更加简单和快捷。请注意,修改之前请先备份注册表,并确保您充分了解所做的更改及其可能带来的影响。
1.5 HSTS
- HSTS(HTTP Strict Transport Security)是一种安全机制,可以告知浏览器只能通过 HTTPS 访问网站,从而防止恶意攻击者利用中间人攻击等手段窃取用户的敏感信息。启用 HSTS 可以提高网站的安全性,避免用户因为不慎访问了不安全的 HTTP 页面而受到攻击。
- 启用 HSTS 可以有效地提高网站的安全性,但需要注意的是,在启用 HSTS 之前必须保证网站已经完全支持 HTTPS,并且证书也已经正确地配置好了。否则,可能会导致网站无法正常访问,甚至造成用户流失。
1.5.1 HSTS的配置方法:
Tomcat
打开Tomcat安装目录 > conf文件夹 > web.xml 文件,在web.xml 文件的web-app标签中添加以下内容进行配置。(可以直接shif+G跳到文件末尾,在前添加)
1 | <filter> |
Nginx
修改nginx配置文件nginx.conf文件,在server段中添加’add_header’指令来设置响应头。add_header Strict-Transport-Security "max-age=31536000";
Apache
打开Apache安装目录下conf.d/ssl.conf 文件(也可能是conf/extra/httpd-ssl.conf,与操作系统及安装方式有关),在配置文件中找到你要启用 HSTS 的虚拟主机部分,通常是以 Header always set Strict-Transport-Security "max-age=31536000"
IIS
在IIS管理器中,选择您的网站,在网站主页中,双击“HTTP响应标头”

在“HTTP响应标头页面”,点击右方“添加”按钮

填入以下内容
名称:Strict-Transport-Security
值:max-age=31536000;
单击”确定”按钮。
1.5.2 检验配置
为了检测HSTS是否成功配置,您可以使用Chrome浏览器打开目标网页,然后按下键盘上的“F12”键,打开“开发者控制台”,并选择“Network”选项卡。在该选项卡中,找到您的域名点击查看其Header响应内容,以确认是否包含Strict-Transport-Security信息,如果包含,则说明HSTS配置成功。

1.6 OCSP服务器验证问题
客户端在访问 HTTPS 网站时,需要对网站的 SSL 证书进行 OCSP 验证,以确保证书的有效性。但是,如果客户端无法连接互联网,那么就无法进行这个验证,这可能会导致 SSL 连接失败。
为了解决客户端无法连接互联网时无法进行 OCSP 验证的问题,可以采取启用 OCSP Stapling 的方案。
启用 OCSP Stapling需要在服务器端进行配置,使其能够定期从 CA 获取证书状态并缓存,然后将其作为响应返回给客户端。但是,服务器需要连接到外部网络的 OCSP 服务器进行验证,因此需要确保防火墙已经放行了相应的网络端口或者添加了相应的策略,以确保服务器能够成功连接到 OCSP 服务器进行验证。这样可以有效地减少对外部网络的依赖,提高安全性和性能。
常见的 SSL 证书品牌提供的 OCSP 服务器地址如下:
- 锐安信:http://ocsp.sectigochina.com
- Sectigo:http://ocsp.sectigo.com
- DigiCert:http://ocsp.digicert.com
- GlobalSign:http://ocsp.globalsign.com
- CFCA: http://ocsp.cfca.com.cn
- GeoTrust:http://ocsp.geotrust.com
2 OCSP Stapling
启用 OCSP Stapling 可以提高 SSL/TLS 通信的安全性和性能。它的主要优势包括:
- 提高安全性:OCSP(Online Certificate Status Protocol)是一种检查证书吊销状态的协议,启用 OCSP Stapling 可以使得服务器主动向客户端提供证书吊销状态信息,而不是等待客户端向 CA 服务器请求。这样可以避免因为 CA 服务器的宕机或者网络延迟等原因导致的证书吊销状态无法及时检查的问题。
- 提高性能:启用 OCSP Stapling 可以减少客户端和 CA 服务器之间的通信次数,从而减少了握手时间和延迟,提高了 SSL/TLS 通信的性能。
- 减少安全漏洞:由于客户端必须要访问 CA 服务器才能获取证书吊销状态,因此会暴露一些安全漏洞,例如中间人攻击。而启用 OCSP Stapling 可以避免这些安全问题,因为服务器主动提供了证书吊销状态信息,而不需要客户端去访问 CA 服务器。
总之,启用 OCSP Stapling 可以提高 SSL/TLS 通信的安全性和性能,减少安全漏洞,对于需要高安全性和高性能的网络应用来说非常重要。
3 配置方法:
Nginx
修改nginx.conf配置文件/etc/nginx/nginx.conf文件,在server段中添加以下指令:
1 | ssl_stapling on; |
配置完成后,需要重启nginx。
Apache
打开Apache 安装目录下conf.d/ssl.conf 文件(也可能是conf/extra/httpd-ssl.conf,与操作系统及安装方式有关),在配置文件中找到你要启用OCSP Stapling 的虚拟主机部分,通常是以
在SSLUseStapling on
在SSLStaplingCache shmcb:/tmp/stapling_cache(128000)
例如:
1 | SSLStaplingCache shmcb:/tmp/stapling_cache(128000) |
配置完成后,需要重启Apache。
IIS
对于 Windows 服务器,您需要做的就是验证您正在运行的 Windows Server 版本。Windows Server 2008 及更高版本默认支持并启用 OCSP Stapling。如果您运行的是 2008 之前的 Windows Server,要启用OCSP Stapling,您需要升级到 Windows Server 2008 或更高版本。
4 检验配置
要检验OCSP Stapling是否配置成功,可以使用以下命令:openssl s_client -connect yourdomain.com:443 –status
其中yourdomain.com是你要检验的域名。运行命令后,查看输出结果中是否有以下返回:
OCSP Response Status: successful (0x0)
如果有这个返回,说明OCSP Stapling已经配置成功。
5 国内外OCSP服务器响应速度对比
- 在HTTPS通信中,OCSP(在线证书状态协议)用于检查数字证书的状态,以验证证书是否已经被吊销。OCSP响应速度的快慢,会影响到HTTPS网站的访问速度。
- 如果OCSP服务器的位置距离客户端越近,HTTPS网站的访问速度就越快。因为当客户端访问HTTPS网站时,客户端会检查证书的状态并请求OCSP服务器获取响应。如果OCSP服务器的位置过远,将会导致响应延迟,从而影响HTTPS网站的访问速度。
- 因此,如果OCSP服务器的位置近,将会使HTTPS网站的访问速度更快,从而提升用户体验。
以下是国内外OCSP服务器响应速度的对比结果,测试采用了Apache ab工具进行,共执行了100次请求,每次并发数为10。
国外OCSP服务器响应速度(平均响应时间(ms)) | 国内OCSP服务器响应速度(平均响应时间(ms)) |
---|---|
514 | 81 |
6 SSL访问速度测试
我们使用 Apache ab 工具对不同的 SSL 证书在不同的 Web 应用中进行了 100 次请求测试,每次并发数为10。以下是我们测试的结果:
证书类型 | Tomcat平均响应时间(ms) | Nginx平均响应时间(ms) | Apache平均响应时间(ms) |
---|---|---|---|
锐安信RSA | 55 | 8 | 7 |
锐安信ECC | 56 | 7 | 7 |
Sectigo RSA | 60 | 8 | 10 |
Sectigo ECC | 56 | 8 | 8 |
由于测试环境为本地环境,响应时间较短,因此测试结果仅供参考。
7 如何测试部署ssl证书后的性能
在部署 SSL 证书后,可能需要测试网站的性能。Apache Benchmark (ab) 是一个常用的性能测试工具,它可以模拟大量用户同时访问网站,从而测试网站的性能和稳定性。ab 可以通过命令行发送请求,支持 HTTP 和 HTTPS 协议。
以下是在 Ubuntu 和 CentOS 系统中安装 ab 工具的步骤:
在 Ubuntu 中,可以使用以下命令安装:
1 | apt-get update |
在 CentOS 中,可以使用以下命令安装:
1 | yum update |
安装完成后,就可以使用 ab 工具进行测试了。
以下是一个示例命令:ab -n 100 -c 10 https://example.com/
这个命令将发送 100 个请求,同时模拟 10 个用户并发访问网站。可以根据需要调整这两个参数,以获取更准确的测试结果。
参考文档链接:
Apache Bench官方文档: https://httpd.apache.org/docs/2.4/programs/ab.html