2015-05-04 56 views
7

我試圖從運行在Ubuntu和遠程位置的PHP/Zend Framework應用程序連接到SQL Server。如何使用PHP/PDO從Ubuntu創建到SQL Server的加密連接

我試圖讓連接的應用程序從SQL Server請求加密(因爲1433上的默認連接是明確的,我不希望我的憑據被嗅探)。

我已經配置了SQL Server上的通配符SSL證書,我創建具有以下DSN一個PDO連接:

dblib:host=server-not-matching-domain.com:1433;dbname=MyDB;Encrypt=true;TrustServerCertificate=false;charset= 

http://blogs.msdn.com/b/brian_swan/archive/2011/03/08/sql-server-driver-for-php-connection-options-encrypt.aspx

兩者由於主機名沒有按」 t匹配安裝的證書,我希望連接失敗 - 但它不會失敗。

+0

當你說你有一個wildcared SSL證書時,那個證書與哪個CN匹配?我懷疑司機可能永遠不會做實際的CN到主機名檢查; TrustServerCertificate = false僅防止自簽名證書。 – mjec

+0

問題是主機名絕對不匹配通配符域,所以我期望出現錯誤。如果在這種情況下我沒有收到證書錯誤,那麼當主機名稱匹配時,我不能相信連接。 – HorusKol

+0

有趣的 - 它似乎我的問題已被複制:http://stackoverflow.com/questions/34875958/php-connect-to-ms-sql-with-ssl - 有很好的答案在這裏和那裏...什麼是協議? – HorusKol

回答

-1

這是一個比設置一個標誌更復雜的標誌。

請參閱本博客:http://www.madirish.net/214

  1. 您將創建或MySQL服務器上安裝SSL證書。
  2. 在my.cnf

    執行以下設置:

    SSL-CA =的/ etc/SSL/MySQL的/ server.csr
    SSL證書=的/ etc/SSL/MySQL的/ server.cert
    SSL -key =的/ etc/SSL/MySQL的/ server.key

  3. 重啓MySQL:mysqld restart

  4. 創建客戶端密鑰

  5. 發送這些鍵一隻要用戶名和密碼。

繼計算器答案詳細解釋一下:

Connect to remote MySQL server with SSL from PHP

PHP to MySQL SSL Connections

希望它能幫助。

+1

可以引用文章的相關部分?我可能接受答案,如果它不僅僅是一個鏈接可能會腐爛 – HorusKol

+2

此問題標記爲'sql-server',表示Microsoft SQL Server。你的答案是MySQL,這是一個不同的DBMS產品。 –

1

可能是因爲Encrypt=true;TrustServerCertificate根本沒有考慮? 如果不是這方面的專家,請查閱PHP中關於PDO_DBLIB DSN的文檔。正如所寫,在DSN中有一個特殊的參數叫做secure,目前尚未使用。 我不知道這是否應該是宣佈您希望在此DSN中建立安全連接的正確方法,並且它對所有標記爲unused的事實也沒有幫助。

另外還做了以下

php.ini中確保以下設置:MSSQL。secure_connection = On

看看如果通過PDO_ODBC進行連接對於您想要達到的效果更好。對於通過PDO_ODBC退房這個example

+0

感謝您讓我重新閱讀手冊 – HorusKol

+0

@HorusKol不需要隊友我總是會檢查它,以防萬一有所改變或萬一我忘記了一些東西。畢竟我們在這場比賽中,因爲底線我們大多是讀者......我們喜歡閱讀和解決。 :)歡呼聲 –

0

嘗試安裝AES加密證書連接這是我已經習慣了保護證書不受外部的侵擾

dblib:host=server-not-matching-domain.com:1433;dbname=MyDB;Encrypt=true;TrustServerCertificate=true;charset=utf8 

使SSL crtificate的默認值true在php.ini文件中的最好 然後用AES進行處理