2014-07-04 73 views
0

我有一個啓用了SSL的電子商務網站,它使用cURL進行支付處理。一切運行良好,但最近我瞭解到「cUrl的CA公共認證軟件包」,認爲將它用於cURL連接是個好主意。cURL的CA公共證書包

如果這是真的,有人可以告訴我如何或它是如何更好/不同於使用標準的SSL?

SSL是否已經爲所有連接提供某種認證?

+1

http://en.wikipedia。org/wiki/Certificate_pinning#Certificate_pinning – SLaks

+0

謝謝我認爲我現在明白了差異 –

+0

請注意讓我們知道爲什麼負面的「投票」??? –

回答

2

任何連接到HTTPS服務器的HTTPS客戶端都將獲得其證書(事實上,它可以是證書鏈)。此服務器證書必須由客戶端驗證以驗證服務器。

這通常通過使用在客戶端上配置爲信任錨點的多個CA證書來完成(即,在遇到服務器證書之前,您信任預先)。客戶端嘗試在服務器鏈的最後一個元素與其信任錨中的一個CA證書之間建立鏈。如果有這樣一個有效的鏈,服務器證書是可信的。

「CA證書包」將是一組信任錨。您可以通過查找您願意信任的CA來構建自己的,也可以使用現有的捆綁軟件。大多數操作系統或瀏覽器都帶有現有的軟件包。 cURL本身不會,但可以依賴預定義的位置(在編譯時設置),或者它也建議使用Firefox bundle(通過轉換機制)。 (您可以通過命令行或通過API覆蓋額外選項來覆蓋默認設置。)

Certificate Pinning(您也提到過)與CA證書包無關。事實上,它幾乎相反。您不必依賴第三方信任錨(證書頒發機構),而是直接「釘住」一組您認爲是直接信任的服務器證書。它們不用於驗證其他證書,而是將您獲得的證書與您對該主機期望的確切證書(或至少您比較公鑰)進行比較。這更像是從服務器名稱到證書(或公鑰)進行引用映射,並將您從主機獲得的內容與您的引用進行比較。當然,這隻能在實踐中適用於一小部分合格的證書,這與CA(PKI)方法不同,後者旨在讓您驗證以前從未遇到過的方(通過第三方:CA)。

它比使用標準SSL更好/不同? SSL是否已經爲所有連接提供了某種認證?

使用CA證書的程序包不是比使用「標準的SSL」不同,它什麼常用的SSL/TLS連接。您通常不會看到它,因爲CA軟件包通常隨您的客戶端(或與OS一起提供)提供。 請注意,嚴格來說,這與SSL/TLS itself正交,它主要只是說你應該認證服務器。證書驗證(PKI方式,通過CA證書)在different specification中定義,當然還有a specification on how to verify the name in the certificate(當然還有HTTPS specification)。

+0

謝謝。非常詳細和信息豐富。 –

-3

找到了很好的答案here。上面的評論確實有幫助。我正在尋找的確切關鍵字是「證書鎖定」。

+0

您提到的博客文章與「證書鎖定」無關。另外,它只討論'CURLOPT_SSL_VERIFYPEER',而不是'CURLOPT_SSL_VERIFYHOST'。 [這兩個問題](http://stackoverflow.com/a/13742121/372643)。值得慶幸的是,在cURL版本中,兩者都應該啓用它們的安全值,這些版本不是太舊。 (因爲'php'在問題中被標記了,所以這被記錄在[這裏](http://www.php.net/manual/en/function.curl-setopt.php))。 – Bruno