我在社区看到一个Tengine + BabaSSL的文章,最近拿此文章的Tengine搭一套环境。目的是想接口用http协议请求tengine,tengine能引入一个国密的ca证书并且以国密的协议做正向代理。请问这个场景tengine能现实吗?当前tengine编译了Tongsuo支持了ntls协议,但是只能提供服务端的国密协议,正向代理转发至客户端依旧是tls协议。
./configure --add-module=modules/ngx_openssl_ntls \
--with-openssl=../path/to/BabaSSL \
是的,Tengine 可以支持国密协议和正向代理。在编译 Tengine 时,可以通过添加模块 ngx_openssl_ntls 来启用 NTLs 协议的支持,并通过指定 OpenSSL 路径来使用 BabaSSL 作为底层密码库。
要实现接口用 HTTP 协议请求 Tengine,并让 Tengine 引入一个国密的 CA 证书,可以使用以下步骤:
--with-openssl
参数指定 BabaSSL 的路径。例如:./configure --add-module=modules/ngx_openssl_ntls \
--with-openssl=../path/to/BabaSSL
http
块中添加以下行:tls on;
tls_protocols TLSv1.2 TLSv1.3;
tls_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
http
块中添加以下行:location / {
proxy_pass http://backend_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
其中,backend_server
是你要代理的目标服务器地址。现在,Tengine 应该能够接受 HTTP 请求,并将它们转发到指定的后端服务器。同时,它还会使用 BabaSSL 提供的国密协议进行加密通信。
使用proxy_connect 透传客户端的国密报文
https://tengine.taobao.org/document_cn/proxy_connect_cn.html 此回答整理自钉群“Tengine和Tengine-Ingress开源交流群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。