介绍
OCSP Stapling是一个TLS / SSL扩展,旨在提高SSL协商的性能,同时保持访问者的隐私。 在继续配置之前,简要介绍证书撤销的工作原理。 本文使用免费的证书由startssl如果出具证明。
本教程将使用Apache和Nginx的基本配置概述如下:
关于OCSP
OCSP(在线证书状态协议)是用于检查SSL证书是否已被撤销的协议。 它被创建为CRL的替代,以减少SSL协商时间。 使用CRL(证书吊销列表),浏览器下载撤销的证书序列号列表并验证当前证书,这增加了SSL协商时间。 在OCSP中,浏览器向OCSP URL发送请求,并接收包含证书的有效性状态的响应。 以下屏幕截图显示了digitalocean.com的OCSP URI。
关于OCSP订书机
OCSP主要有两个问题:CA的服务器上的隐私和重负载。
由于OCSP要求浏览器联系CA以确认证书的有效性,因此会损害隐私。 CA知道正在访问什么网站和访问它的人。
如果HTTPS网站获得大量访问者,CA的OCSP服务器必须处理访问者发出的所有OCSP请求。
当实施OCSP Stapling时,证书持有者(读取web服务器)查询OCSP服务器自身并缓存响应。 这种反应是“Stapling”通过证书状态请求延长响应TLS / SSL握手。 因此,CA的服务器不会受到请求的负担,浏览器不再需要向任何第三方披露用户的浏览习惯。
检查OCSP Stapling支持
支持OCSP Stapling
- Apache HTTP服务器(> = 2.3.3)
- Nginx(> = 1.3.7)
请在继续之前使用以下命令检查安装的版本。
Apache:
apache2 -v
Nginx:
nginx -v
CentOS的/ Fedora用户更换apache2
与httpd
。
检索CA软件包
以PEM格式检索根CA和中间CA的证书,并将它们保存在单个文件中。 这是用于StartSSL的根证书和中级CA证书。
cd /etc/ssl
wget -O - https://www.startssl.com/certs/ca.pem https://www.startssl.com/certs/sub.class1.server.ca.pem | tee -a ca-certs.pem> /dev/null
如果CA提供的DER格式的证书将它们转换为PEM。 例如DigiCert提供DER格式的证书。 要下载它们并转换为PEM,请使用以下命令:
cd /etc/ssl
wget -O - https://www.digicert.com/CACerts/DigiCertHighAssuranceEVRootCA.crt | openssl x509 -inform DER -outform PEM | tee -a ca-certs.pem> /dev/null
wget -O - https://www.digicert.com/CACerts/DigiCertHighAssuranceEVCA-1.crt | openssl x509 -inform DER -outform PEM | tee -a ca-certs.pem> /dev/null
命令两套用tee
写入文件,所以你可以使用sudo tee
如果登录作为一个非root用户。
在Apache上配置OCSP订书机
编辑SSL虚拟主机文件,并将里面这些行<VirtualHost></VirtualHost>
指令。
sudo nano /etc/apache2/sites-enabled/example.com-ssl.conf
SSLCACertificateFile /etc/ssl/ca-certs.pem
SSLUseStapling on
缓存的位置已被指定以外 <VirtualHost></VirtualHost>
。
sudo nano /etc/apache2/sites-enabled/example.com-ssl.conf
SSLStaplingCache shmcb:/tmp/stapling_cache(128000)
如果你跟着这篇文章来在Apache安装SSL的网站,虚拟主机文件看起来如下:
/etc/apache2/sites-enabled/example.com-ssl.conf
<IfModule mod_ssl.c>
SSLStaplingCache shmcb:/tmp/stapling_cache(128000)
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName example.com
DocumentRoot /var/www
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/example.com/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/example.com/apache.key
SSLCACertificateFile /etc/ssl/ca-certs.pem
SSLUseStapling on
</VirtualHost>
</IfModule>
做一个configtest
以检查错误。
apachectl -t
如果刷新Syntax OK
显示。
service apache2 reload
访问IE(Vista及以上版本)或Firefox 26+上的网站,并检查错误日志。
tail /var/log/apache2/error.log
如果定义的文件SSLCACertificateFile
指令丢失,证书类似于以下的错误显示。
[Fri May 09 23:36:44.055900 2014] [ssl:error] [pid 1491:tid 139921007208320] AH02217: ssl_stapling_init_cert: Can't retrieve issuer certificate!
[Fri May 09 23:36:44.056018 2014] [ssl:error] [pid 1491:tid 139921007208320] AH02235: Unable to configure server certificate for stapling
如果没有显示此类错误,请继续执行最后一步。
在Nginx上配置OCSP Stapling
编辑SSL虚拟主机文件,并将里面以下指令server {}
部分。
sudo nano /etc/nginx/sites-enabled/example.com.ssl
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/ssl/private/ca-certs.pem;
如果按照本文设置SSL主机上的Nginx的完整的虚拟主机文件看起来像这样:
/etc/nginx/sites-enabled/example.com.ssl
server {
listen 443;
server_name example.org;
root /usr/share/nginx/www;
index index.html index.htm;
ssl on;
ssl_certificate /etc/nginx/ssl/example.org/server.crt;
ssl_certificate_key /etc/nginx/ssl/example.org/server.key;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/ssl/private/ca-certs.pem;
}
做一个configtest
,看看是否一切正常。
service nginx configtest
然后重新装入nginx
服务。
service nginx reload
访问IE(Vista及以上版本)或Firefox 26+上的网站,并检查错误日志。
tail /var/log/nginx/error.log
如果定义的文件ssl_trusted_certificate
缺少证书类似于以下的错误显示:
2014/05/09 17:38:16 [error] 1580#0: OCSP_basic_verify() failed (SSL: error:27069065:OCSP routines:OCSP_basic_verify:certificate verify error:Verify error:unable to get local issuer certificate) while requesting certificate status, responder: ocsp.startssl.com
如果没有显示此类错误,请继续执行下一步。
测试OCSP Stapling
两种方法加以说明,以测试OCSP Stapling工作-在openssl
在Qualys的命令行工具和SSL测试。
OpenSSL命令
此命令的输出显示一个部分,说明您的Web服务器是否使用OCSP数据进行响应。 我们grep
这个特殊的部分,并显示它。
echo QUIT | openssl s_client -connect www.digitalocean.com:443 -status 2> /dev/null | grep -A 17 'OCSP response:' | grep -B 17 'Next Update'
替换www.digitalocean.com
与您的域名。 如果OCSP Stapling正常工作,将显示以下输出。
OCSP response:
======================================
OCSP Response Data:
OCSP Response Status: successful (0x0)
Response Type: Basic OCSP Response
Version: 1 (0x0)
Responder Id: 4C58CB25F0414F52F428C881439BA6A8A0E692E5
Produced At: May 9 08:45:00 2014 GMT
Responses:
Certificate ID:
Hash Algorithm: sha1
Issuer Name Hash: B8A299F09D061DD5C1588F76CC89FF57092B94DD
Issuer Key Hash: 4C58CB25F0414F52F428C881439BA6A8A0E692E5
Serial Number: 0161FF00CCBFF6C07D2D3BB4D8340A23
Cert Status: good
This Update: May 9 08:45:00 2014 GMT
Next Update: May 16 09:00:00 2014 GMT
如果OCSP Stapling不工作,则不显示输出。
Qualys在线SSL测试
要检查这个网上去这个网站 ,并输入你的域名。 一旦测试完成根据协议细节部分进行检查。
附加阅读
- Mozilla的对OCSP Stapling文章- http://en.wikipedia.org/wiki/OCSP_stapling
- 在OCSP Stapling维基百科的文章- http://en.wikipedia.org/wiki/OCSP_stapling