ssl - 通过非 HTTP 协议代理的 TLS 终止(加密/解密)
问题描述
所讨论的协议是 MRCP v2 协议。
问题概述:
客户端发送 MRCP/TLS 请求,而服务器无法理解这些请求,因为它没有执行 TLS 握手或加密的能力。我希望 HAProxy 或任何其他代理(Nginx?)将解密这些 TLS 数据包,并将其发送到服务器,服务器可以响应,然后 HAProxy 可以加密并将其发送回客户端。
如果可能的话,我还想要一种将其扩展到 SIP 协议的方法。根据我对 HAProxy 的了解,它不能对 TCP(第 4 层)进行 TLS 终止,只能对 HTTP(第 7 层)进行终止。有什么解决方法/替代方法吗?
解决方案
您正在寻找 NGINX 及其ngx_stream_ssl_module。它允许您加密任意 TCP 流量(不必是 HTTP)。无需特殊安装。只需安装 NGINX 并将其放在您的服务器上,而不是 HAProxy 或任何 TLS 终结器。配置很简单:
stream {
...
server {
listen 12345 ssl;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
ssl_certificate /usr/local/nginx/conf/cert.pem;
ssl_certificate_key /usr/local/nginx/conf/cert.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
...
}
}
客户端 -> NGINX(流 TLS 终止)-> 任何 TCP 协议。
NGINX 只会做 TLS 加密而不检查底层协议。
推荐阅读
- arrays - 将字符串解析为数据框
- node.js - 如何从 Google Cloud 功能将图像文件上传到 Google Storage Bucket
- arrays - 为什么我不能在 ruby 中的数组上使用 Match 方法?
- python - Python 描述符
- c# - 带有 INTERNET_OPTION_PROXY 的 InternetQueryOption 返回空字符串而不是设置的代理设置
- html - 如何在 CSS 中旋转 div 中的文本以使我的数字看起来正确(我已经旋转了 div 本身只是想让数字旋转))
- openssl - 当给定多个输入时,openssl 如何在标准输入上执行散列?
- javascript - 使用 jQuery 显示隐藏文本
- html - 图像未拉伸到 div 的完整大小
- identityserver4 - 带有 WebAuthN 的 Identity Server 4 - 使用 GrantType (FIDO 2.0)