Server端与Client端通信使用的TLS证书是动态的,所以证书过期后,Server端需要重新加载新证书。
有什么方法能不重启进程,平滑的加载上新的证书。
发布于 2020-05-04 06:39:02
在ssl握手过程中,证书替换只有在sni阶段发送,也就是说如果没有发生sni的,证书使用的是监听端口配置的证书,而这个证书在内存中需要进程重启才能生效。在golang是用ListenAndServeTLS函数,查看源码可以发现,必须重启才能生效新证书。再回头过来看sni发生的条件,1)客户端发起某个域名sni请求、2)服务端加载该域名的证书。也就是说需要如果有发生域名变更,是可以使用配置的新证书。但是这个新证书热加载到内存,需要做进一步的定制化开发,估计原版的代码是不可以的。
相似问题
领取专属 10元无门槛券
AI混元助手 在线答疑
洞察 腾讯核心技术
剖析业界实践案例