通过 HTTP 代理使用 OpenSSL s_client 并启用基本认证
在使用 OpenSSL 的 proxy_user 和 proxy_pass 选项时,保持目标主机名验证处于开启状态。
OpenSSL 3.x s_client 为 HTTP CONNECT 代理提供 proxy-user 和密码来源选项。对于已经导出 PROXY_USER 和 PROXY_PASSWORD 的环境:
openssl s_client \
-proxy proxy.example.net:8080 \
-proxy_user "$PROXY_USER" \
-proxy_pass env:PROXY_PASSWORD \
-connect example.com:443 \
-servername example.com \
-verify_hostname example.com \
-verify_return_error
实际的选项名使用下划线:-proxy_user 和 -proxy_pass。代理端点是 host:port,而 connect 和 servername 用于标识目标。
proxy_pass 使用 OpenSSL 的密码来源语法。env:PROXY_PASSWORD 读取指定的环境变量;file:/path/to/file 是另一种有文档记录的来源形式。裸密码不是同一种参数格式。
所示选项要求证书和主机名检查,验证错误会被视为致命错误。请为安装和目标提供适当的 CA 配置,例如必需的 CAfile。
此代理认证是基本认证。所示的代理连接是普通 HTTP,因此目标后续的 TLS 握手不会加密先前的登录交换。它不实现 NTLM 或 Kerberos 代理协商。