2009-11-22 39 views
1

我需要能夠加密從Web服務器到數據庫服務器的MySQL流量。我知道如何根據my.cnf中的服務器和客戶端設置將MySQL設置爲使用SSL,但是這需要使用PHP中的mysql_connect()完成。這可能是一個2部分的問題。在腳本中加密MySQL流量

1)是否mysql_connect()函數使用在my.cnf中設置MySQL客戶端設置?

如果不是......

我已閱讀,你可以使用,無論MYSQL_CLIENT_SSL,其中從獲得的數據SSL?在mysql_connect函數中使用MYSQL_CLIENT_SSL是否自動加密流量?

簡而言之,這樣做的最好方法是什麼?

謝謝!

回答

2

作爲替代方案,也可以使用SSH tunnels來完成壓縮和加密。

1

MYSQL_CLIENT_SSL已從PHP中刪除,不應該工作。

你有幾個選擇:第一個是如果你的Web服務器也是你的數據庫服務器,你不需要加密,因爲連接永遠不會離開你的盒子:它只使用localhost

第二個選擇是使用什麼巴勃羅上述建議,並採取SSH隧道的優勢。 SSH隧道本質上與SSL連接完全相同,只是需要一個「額外步驟」才能實現。

這似乎是一個相當不錯的教程,以幫助您開始:

http://www.revsys.com/writings/quicktips/ssh-tunnel.html

希望這有助於!

+0

不是我懷疑你,但它何時被刪除?我剛剛在2009年7月發現了一個涵蓋了這個問題的教程,但是如果刪除了MYSQL_CLIENT_SSL,那麼這個教程就不是問題了。 http://www.madirish.net/?article=244 從我所看到的,MYSQL_CLIENT_SSL仍然是在文檔中,以及 – threepoints 2009-11-22 15:37:16

4

如果使用SSL連接到MySQL,則SSL客戶端和服務器之間的所有流量都將被加密。

MYSQL_CLIENT_SSL已過時。使用mysqli的,如果你需要使用SSL,

$db = mysqli_init(); 
$db->ssl_set(null, null,'cacert.pem',NULL,NULL); 
$db->real_connect('host','user','pass','db'); 
1

根據http://www.php.net/manual/en/mysql.constants.php#mysql.client-flagsMYSQL_CLIENT_SSL仍是PHP 4的一部分,並5.您需要建立SSL連接事先雖然。您必須生成證書和一堆其他麻煩(http://www.madirish.net/?article=244),但它會加密您的Web服務器和數據庫主機之間的流量。

正如上面提到的,如果您的Web服務器是相同的主機數據庫服務器上該加密的數據通過本地套接字和未暴露於網絡是不必要的。 SSL加密僅對網絡上的流量進行加密。

我會警告不要使用SSH隧道,因爲他們有死的傾向,你會擔心保持連接。