Nginx 启用 OCSP Stapling的配置
这里,我将介绍什么是OCSPStapling以及为什么要开启它。
在线证书状态协议(OnlineCertificateStatusProtocol),简称OCSP,是一个用于获取X.509数字证书撤销状态的网际协议,在RFC6960中定义。OCSP用于检验证书合法性,查询服务一般由证书所属CA提供。OCSP查询的本质,是一次完整的HTTP请求加响应的过程,这中间涵括的DNS查询、建立TCP连接、Web端工作等步骤,都将耗费更多时间,使得建立TLS花费更多时长。
而这时,OCSPStapling出现了。经由OCSPStapling(OCSP封套),Web端将主动获取OCSP查询结果,并随证书一起发送给客户端,以此让客户端跳过自己去寻求验证的过程,提高TLS握手效率。
生成OCSPStapling文件
经过以下步骤生成所需的用于OCSPStapling验证的文件
首先,需要准备三份证书:
站点证书(website.pem)+根证书(root.pem)+中间证书(intermediate.pem)
中间证书和根证书,需要根据你的证书的CA,去下载对应的证书
以下列出了Let'sEncrypt的中间证书和根证书的下载地址:
根证书:
DSTRootCAX3https://ssl-tools.net/certificates/dac9024f54d8f6df94935fb1732638ca6ad77c13.pem
ISRGRootX1https://letsencrypt.org/certs/isrgrootx1.pem
中间证书:
Let'sEncryptAuthorityX1https://letsencrypt.org/certs/lets-encrypt-x1-cross-signed.pem
Let'sEncryptAuthorityX2https://letsencrypt.org/certs/lets-encrypt-x2-cross-signed.pem
Let'sEncryptAuthorityX3https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem
Let'sEncryptAuthorityX4https://letsencrypt.org/certs/lets-encrypt-x4-cross-signed.pem
这里以DSTRootCAX3根证书+Let'sEncryptAuthorityX3中间证书为例(现在Let'sEncrypt签发的证书基本都是这样的组合):
#下载根证书和中间证书 wget-Oroot.pemhttps://ssl-tools.net/certificates/dac9024f54d8f6df94935fb1732638ca6ad77c13.pem wget-Ointermediate.pemhttps://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem #生成OCSPStapling验证文件 #注意,中间证书在上、根证书在下 catcatintermediate.pem>chained.pem catroot.pem>>chained.pem
这样,生成的chained.pem就是所需的OCSPStapling验证文件。
OCSPStaplingResponse
opensslx509-inwebsite.pem-noout-ocsp_uri
使用这个命令后,返回你的证书对应的OCSP服务地址
例如,Let'sEncrypt现在的OCSP服务地址是http://ocsp.int-x3.letsencrypt.org/
以Let'sEncrypt为例,获取站点证书的OCSPResponse
opensslocsp-no_nonce\ -issuerintermediate.pem\ -CAfilechained.pem\ -VAfilechained.pem\ -certwebsite.pem\ -urlhttp://ocsp.int-x3.letsencrypt.org\ -text
若没有错误,会返回如下:
ResponseverifyOK
website.pem:good
ThisUpdate:Oct2400:00:412017GMT
NextUpdate:Oct3100:00:412017GMT
Nginx启用OCSPStapling
ssl_staplingon; ssl_stapling_verifyon; ssl_trusted_certificate~/chained.pem; resolver208.67.222.222valid=300s; resolver_timeout5s;
然后重启Nginx,就成功启用OCSPStapling了
OCSPStaplingStatus
openssls_client-connectsometimesnaive.org:443-status-tlsextdebug&1|grep-i"OCSPresponse"
若站点已成功启用OCSPStapling,会返回以下
OCSPresponse: OCSPResponseData: OCSPResponseStatus:successful(0x0) ResponseType:BasicOCSPResponse
若返回这个,明显就是失败了
OCSPresponse:noresponsesent
也可以访问ssllabs进行SSL测试,其中也能看到OCSPStapling开启与否的报告。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。