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 代理协商。

相关文章