首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在openresty中将客户端ssl cert变量设置为消息的请求头。

在openresty中将客户端ssl cert变量设置为消息的请求头。
EN

Stack Overflow用户
提问于 2018-05-22 23:04:38
回答 1查看 1.2K关注 0票数 0

我正在尝试为内部测试创建一个路由器。我正在使用openresty image RESTY_CONFIG_OPTIONS_MORE。由于我们从客户端发送的消息是二进制的,并且没有任何请求标头,所以我们试图从证书中提取颁发者和序列号,并将它们设置为请求头。我们希望使用这些头来路由到我们的测试服务器,而不是生产,这取决于头值。

我的dockerfile是这样抓取的:

代码语言:javascript
运行
复制
ENV RESTY_CONFIG_OPTIONS_MORE "--with-ngx_http_ssl_module"

我已经在服务器块中尝试了以下内容,但没有工作:

代码语言:javascript
运行
复制
rewrite_by_lua_block {
        ngx.req.set_header("x-issuer", ngx.var.ssl_client_i_dn)
    }

作者提到,除了高山和窗口之外,所有图像中都包括envsubst实用程序。这与我的问题有任何关系吗?

如果只是附加配置选项将不能工作,您认为哪一个是最好的选择?

  1. 使用nginx-ssl-变量看起来就像我们希望它做的那样:https://github.com/Seb35/nginx-ssl-variables
  2. 修改openresty代码以构建我们自己的映像,以增强ngx.ocsp模块,使证书可作为ngx.var.ssl_client_raw_cert in rewrite_by_lua_block使用
  3. 修改openresty代码以构建我们自己的映像,该映像覆盖SSL握手
  4. 以上几点的结合
  5. 另一个?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-25 09:04:30

默认情况下,ngx_http_ssl_module安装在正式的OpenResty码头映像中。你不需要关心RESTY_CONFIG_OPTIONS_MORE。

海事组织最好的解决方案是使用nginx变量作为参考实现并设置所需的变量,例如:

代码语言:javascript
运行
复制
set_by_lua_block $ssl_client_issuer {
        if ngx.var.https == "on" then
            return require("openssl").x509.read(ngx.var.ssl_client_raw_cert):issuer():oneline()
        end
        return nil
}

您需要安装lua-openssl。要安装该模块,最简单的方法是将其包含到您的Dockerfile中(从使用滑轮支架生成的映像构建):

代码语言:javascript
运行
复制
RUN luarocks install openssl --server=https://rocks.moonscript.org/dev
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50477607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档