xjpvictor's Blog
小老鼠,上灯台,两只耳朵竖起来

nginx开启OCSP stapling


各种折腾·vpsweb

本文发表于超过180天以前,部分内容可能已经失效

最近发现我的博客在opera里经常提示ocsp error。这个错误的原因是opera在验证ssl证书的时候出错,主要是验证的服务器的问题。

我用的alphassl的证书,验证ocsp的url是http://ocsp2.globalsign.com/gsalphag2,去http://uptime.netcraft.com/perf/reports/OCSP查看才知道这个地址验证ocsp有0.38%的失败率,表现简直是倒数了。而opera在ocsp验证出错后就会缓存24小时,所以就一直提示ocsp错误了。

ocsp error

ocsp error

要解决的话最好的方法是ocsp stapling。也就是说先向ocsp验证服务器请求验证,把验证证书保存下来,然后当浏览器建立连接的时候就直接把证书发过去,就不需要再向ocsp服务器验证了。这样也能加快连接速度。

先把用的证书保存下来,因为是证书链,所以保存为level0,level1

openssl s_client -showcerts -connect xjpvictor.info:443 < /dev/null | awk -v c=-1 '/-----BEGIN CERTIFICATE-----/{inc=1;c++} inc {print > ("level" c ".crt")}/---END CERTIFICATE-----/{inc=0}'

然后还需要level2,因为level1是靠level2验证的,level2是根证书,是GlobalSign的,在/usr/share/ca-certificates/mozilla/中找到这个证书,复制出来,作为level2。

把level1和level2的证书放在一起

cat level{1,2}.crt > CAbundle.crt

最后请求ocsp证书。需要用-header "HOST" "ocsp2.globalsign.com"不然会出错。

openssl ocsp -issuer level1.crt -nonce -CAfile CAbundle.crt -url "http://ocsp2.globalsign.com/gsalphag2" -cert level0.crt -header "HOST" "ocsp2.globalsign.com" -text -respout ./xjpvictor.info.ocsp

获得的ocsp证书放在nginx的证书目录中去,修改nginx.conf,在需要用https的server中加上

ssl_stapling on;
ssl_stapling_file /etc/nginx/certs/xjpvictor.info.ocsp;
ssl_stapling_verify on;
ocsp stapling

ocsp stapling

用chrome的话是不会有这个问题的,因为chrome并没有ocsp验证功能,而是采用了google私有的一个验证方式,大概是google自己维护一个验证列表下发到chrome中,而google这么做的理由是ocsp is inefficient,很扯。

Update: 2014-01-23
用了一段时间以后发现nginx ocsp stapling只会读取默认server中的设置,所以如果是多域名的话,其他域名也是返回默认server中设置的证书,最后导致其他域名ocsp验证失败,浏览器甚至可能禁止打开这个网址了。所以其他域名下就必须设置成ssl_stapling off;了。而且默认server下如果不开启ssl_stapling,那其他server开启也没用。

另外,ocsp证书有效期很短,大概不到一个月,所以过段时间要更新ocsp证书,不然还是会验证失败。

本文 "nginx开启OCSP stapling" 由 K. Huang 首先发表于 xjpvictor's Blog 并以 CC BY-NC 4.0 许可证发布 © 2013
转载注明引用来源 https://blog.xjpvictor.info/2013/09/nginx-ocsp-stapling/

赞助我

4条评论

  1. 正在研究这个,但是看起来好麻烦的样子

    回复
  2. 谷歌有证书透明度记录,按照国际标标准,SSL的颁发过程都要公开在谷歌等大公司的透明度log服务器上。发现乱颁发的直接在浏览器里吊销掉。所以,人家却确实会认为这个OCSP很扯。

    回复

评论

你的邮箱地址不会被公开。必填项以 * 标出

无意义或不相关评论将被删除

取消 上传图片 或拖拽上传

* Some files will not be uploaded. Only png, gif, jpg are allowed and maximum 10 images, each file less than 10M.

你可以添加 10 个 png/gif/jpg 图片 (每个文件小于 10M)

允许使用以下html标签:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

你可以上传文件,粘贴代码或长文至 Drop.it.r

更多相似文章