Postgresql Windows服务器ssl压缩无法正常工作

时间:2016-02-04 15:32:52

标签: postgresql ssl compression npgsql

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

我对加密不感兴趣,我想测试我的应用程序是否通过线路压缩表现更好。

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

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

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

对服务器使用“openssl s_client connect”,它说:COMPRESSION:没有响应。

如何在Postgresql 9.5 x64 Windows服务器上运行SSL压缩?

更新:我编译了一个启用了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客户端使用压缩吗?

2 个答案:

答案 0 :(得分:1)

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

使用ssl压缩,采用10MB数据传输的选择查询减少到大约1MB。

此时Npgsql似乎不支持ssl压缩(v3.0.5)。

答案 1 :(得分:0)

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

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