Postgresql windows 服务器 ssl 压缩不工作

Postgresql windows server ssl compression not working

在 Windows 上使用 Postgresql 9.5 x64,我启用了 SSL(使用默认允许的密码 "HARD:MEDIUM:!aNULL")并检查了 SSL 压缩。

我对加密不感兴趣,我想测试我的应用程序是否通过网络压缩执行得更好。

PGAdmin 连接正常。 我的 Npgsql 客户端也连接正常。

但是分析网络流量,它表明网络上没有压缩(与没有 ssl 相比总数据没有差异)。

我怀疑 postgresql 使用的 OpenSSL 没有使用 ZLIB 进行压缩,或者我的客户端没有。

对服务器使用 "openssl s_client connect" 它说:压缩:NONE 在它的响应中。

如何让 SSL 压缩在我的 Postgresql 9.5 x64 windows 服务器上运行?

更新:我编译了一个启用了 ZLIB 的 OpenSSL.dll (https://github.com/openssl/openssl/tree/OpenSSL_1_0_2-stable)。将生成的 libeay32.dll 和 ssleay32.dll 放在 PostgreSQL/9.5/bin 文件夹中。 现在,当我使用 PgAdminIII 连接并启用 SSL 压缩时,我确实可以通过网络进行压缩。

但是,使用 Npgsql(ado.net 提供程序),没有压缩。我可以断定 npgsql 不支持 SSL 压缩吗?或者我可以做些什么让 npgsql 客户端使用压缩吗?

构建我自己的 openssl,包括 ZLIB,在 postgresql 服务器后端启用压缩。对于使用 libpq 并在连接字符串中使用 sslcompression=1 进行连接的 C++ 客户端,它使用压缩。

一个 select 查询需要 10MB 的数据传输,通过 ssl 压缩减少到大约 1MB。

Npgsql 目前似乎不支持 ssl 压缩 (v3.0.5)。

默认情况下,Npgsql 3.0.x 使用 TLS/SSL 的内部实现(可能)不支持压缩。您可以在连接字符串中传递设置 Use SSL Stream=true 以使 Npgsql 使用 .NET SSLStream 实现,这可能会支持压缩。

在 3.1 中,我们可能会删除内部实现以默认返回 SSLStream。