ocsp和ldap 区别_HTTPS 时代 - 动态加载证书和 OCSP stapling - 《OpenResty 最佳实践》 - 书栈网 · BookStack...

本文介绍了如何在OpenResty中动态加载PEM和DER格式的SSL证书及私钥,以及如何实现OCSP stapling以优化HTTPS连接的性能。通过lua-resty-core库和OpenSSL的API,动态设置证书和私钥,解决了预先准备所有证书的需求。同时,详细展示了OCSP stapling的查询、验证和设置过程,以减轻浏览器的证书状态查询压力并提升页面加载速度。
摘要由CSDN通过智能技术生成

动态加载证书和 OCSP stapling

一个标准的 Nginx ssl 配置必然包含这两行:

ssl_certificate example.com.crt;

ssl_certificate_key example.com.key;

Nginx 启动时会读取配置的证书内容,并经过一系列解析后,最终通过调用 OpenSSL 的 SSL_use_certificate 来设置证书。

对于匹配的私钥,Nginx 调用的是 SSL_use_PrivateKey。

于是有了个新的想法:既然 OpenSSL 允许我们动态地设置证书和私钥,也许我们可以在建立连接前才设置证书和私钥呢?

这样一来,我们可以结合 SNI,针对不同的请求域名动态设置不同的证书和私钥,而无需事先把可能用到的证书和私钥都准备好。

动态加载证书

借助 OpenResty,我们可以轻易地把这个想法变成现实。

所需的,是 ssl_certificate_by_lua* 指令和来自 lua-resty-core 的 ngx.ssl 模块。另外,编译 OpenResty 时指定的

OpenSSL 需要 1.0.2e 或以上的版本。

见下面的示例代码:

server{

listen443ssl;

server_name test.com;

# 用于满足 Nginx 配置的占位符

ssl_certificate fake.crt;

ssl_certificate_key fake.key;

ssl_certificate_by_lua_block{

localssl=require"ngx.ssl"

--清除之前设置的证书和私钥

localok,err=ssl.clear_certs()

ifnotokthen

ngx.log(ngx.ERR,"failed to clear existing (fallback) certificates")

returnngx.exit(ngx.ERROR)

end

--后续代码见下文

}

}

证书/私钥的格式分两种,一种是文本格式的 PEM,另一种是二进制格式的 DER。我们看到的证书一般是 PEM 格式的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值