2016-02-04 21 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。