2016-02-04 22 views
0

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

我对加密不感兴趣,我想测试我的应用程序在线路上的压缩效果是否更好。

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

但是分析网络流量,它显示没有通过网络压缩(与没有ssl相比,总数据没有差异)。

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

使用“openssl s_client connect”到服务器它说:COMPRESSION:NONE在它的响应中。

如何在我的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客户端使用压缩?

回答

0

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

采用10MB数据传输的选择查询,通过ssl压缩减少到1MB左右。

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

0

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

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