在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客户端使用压缩吗?
答案 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。