我使用的是nginx1.16.0,现在有一个场景,其中服务器名的一部分需要加载不同的SSL证书。由于某些原因,我不能使用OpenResty,所以我需要编写模块来实现这个函数。
现在我想到了两种选择。
set $certificate_var ''; #Create custom variables set $certificate_key_var ''; GetCertificateWithUpdateVariable 'certificate_var' 'certificate_key_var';#Modify the values of custom variables according to business logic within the custom module ssl_certificate $certificate_var; ssl_certificate_key $certificate_key_var;的效果。我开始实施这两个方案,但我遇到了问题。
第一种解决方案: ssl_certificate不支持用户定义的变量,nginx在1.15.9版本之后开始支持一些内置变量,这些变量可以添加到ssl_certificate指令中,但是这有点固定,我不能用判断来做一些事情,所以这个想法不能满足我的需要。需求。
ssl_certificate /root/ssl/$ssl_server_name/fullchain.cer; ssl_certificate_key /root/ssl/$ssl_server_name/nginx.kooboo.cn.key;
那么,其他想法能否绕过这一限制呢?
第二个解决方案是修改有关ssl的nginx源代码。nginx的源代码非常庞大。我找不到ssl的核心部分。从逻辑上讲,它应该是在判断服务器名称之后传入并加载相应证书的HTTP请求。这个链接应该是一个键值对搜索过程,我现在想改变这个块的进程,我想自己管理这个键值对,以便控制他的搜索。这部分容易实现吗?我应该修改代码的哪一部分?
我期待着你的reply.thanks
发布于 2020-02-23 11:39:21
我已经有一段时间没有登录了,但是我已经实现了这个函数。下面是一条记录:您只需要更改在SSL_CTX_set_cert_cb中注册的ngx_http_ssl_module.c函数
https://stackoverflow.com/questions/57508690
复制相似问题