2014-09-30 57 views
1

如果我運行此代碼需要SSL,它將無法工作(訪問拒絕用戶),但沒有SSL它的工作原理。PDO不適用於SSL

服務器端可能會發生什麼情況來阻止它?顯然不是密碼/用戶配置和另一個連接到服務器與SSL工作正常,所以我知道服務器正在接受加密連接。

有關我已有的信息已檢出Connect to remote MySQL server with SSL from PHP

$dbE = new PDO(
    'mysql:dbname=DB;host=IP', 
    USER, 
    PASS, 
    array(
     PDO::MYSQL_ATTR_SSL_KEY => 'D:\ssl\mysql\client-key.pem', 
     PDO::MYSQL_ATTR_SSL_CERT => 'D:\ssl\mysql\client-cert.pem', 
     PDO::MYSQL_ATTR_SSL_CA => 'D:\ssl\mysql\ca-cert.pem' 
    ) 
); 
+0

你使用什麼PHP版本? – Daan 2014-09-30 13:21:43

+0

我目前在5.3.8上,但在升級到最新的WAMP服務器的過程中,看看是否改善了事情。不幸的是,\ \並沒有特別的幫助,但會看到升級是否有效。 – Ukuser32 2014-09-30 13:53:40

回答

0

調查了很多後,重建證書和頭撲我想通了(PTL)。問題是(而且我也沒有真正找到這個地方),但客戶端證書必須從服務器複製到客戶端。在PDO配置中使用的路徑是到CA/cert/key的CLIENTS副本的路徑,而不是服務器上的路徑。我沒有讚賞這一點,我認爲它需要更清楚。

即使在http://dev.mysql.com/doc/refman/5.0/en/creating-ssl-certs.html上的示例意味着客戶端密鑰駐留在服務器上,而不是客戶端。我希望這是有幫助的。