2017-02-17 92 views
0

因此,我一直在這個問題上抨擊我的頭在過去的幾個小時。如何啓用TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384密碼與Apache 2.4和mod_ssl

問題是,我有一個iOS應用程序加載了一些網頁內容。 試圖做好自己的工作,但發現錯誤「An SSL Error has occurred and has an secure connection to the server can not be made」。

我跑的URL通過SSLLabs,看到我已經在握手仿真列出以下錯誤:

Apple ATS 9/iOS 9 "Server sent fatal alert: handshake_failure"

不知道這件事了,這似乎是關係到不能夠提供密碼到應用程序的WebView,它可以保證正向保密

列出了Apple ATS 9/iOS 9的可接受密碼列表here

我匹配該列表的openssl ciphers的輸出,我提供here

首先,從OpenSSL的列表中的密碼和加密法從SSLLabs看起來是兩種不同格式/命名約定。但除此之外,它看起來像我不支持任何ECDHE_ECDSA[...],除非我只是讀錯了。

在缺乏事情好做,我剛剛用它和我的主機的SSL配置瞎搞現在在他們這些行:

SSLProtocol -ALL +TLSv1.2 
SSLCipherSuite TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:ECDHE-RSA-AES256-GCM- 
SHA384:HIGH:!RC4:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK 
SSLHonorCipherOrder On 

這似乎什麼都不做。

當我查看可用的TLSv1.2密碼SSLLabs報告時,它完全停止了對我的任何意義。我已經把這個清單her。在我看來,這與我在SSLCipherSuite中定義的內容完全不符 - 但將該列表與ATS支持的密碼列表進行比較,似乎很清楚爲什麼它會抱怨。

我承認,我在這裏有一點點 - 我想了解發生了什麼,但我真的不知道從哪裏開始。

  1. 我是否安裝了正確的密碼?
  2. 如果沒有,我在哪裏可以得到它們(我目前在openssl 1.0.2k和Apache 2.4.25上)
  3. 如果我確實有正確的密碼,openssl列表如何與SSLLabs中的列表對應?
  4. 如何在服務器上啓用正確的密碼?

非常感謝您的時間。

+0

如果這實際上是SSLLabs檢測到的密碼的完整列表,那麼您可能在apache配置中的某個位置有另一個SSLCipherSuite定義。請注意,對於不同的VirtualHost,不可能有不同的SSLCipherSuite,因此請檢查所有配置文件。 –

+0

您觀察到的密碼名稱錯誤(https://www.openssl.org/docs/man1.0.2/apps/ciphers.html同時列出了兩種格式)。我不知道爲什麼你不會有任何ECDHE密碼,但試試這個:https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=apache-2.4.18&openssl = 1.0.2k&hsts = no&profile = intermediate –

+0

@SteffenUllrich我確定沒有其他配置。那麼,至少我可以確定。我正在測試只有一個VirtualHost的設置。 –

回答

0

對不起,延遲迴復。你所有的評論都是正確的方向。 但是,我發現真正的罪魁禍首是dev-libs/opensshnet-misc/openssl上的USE標誌。由於授權問題,我尋找的密碼不包括在內,因爲默認情況下缺少bindist標誌。

我將兩者都添加到我的/etc/portage/packages.use,禁用了bindist。像這樣:

dev-libs/openssl -bindist 
net-misc/openssh -bindist 

然後我重新編譯了這兩個。在重建這兩個軟件包以及所有依賴它們的東西之後,我所有的ECDHE_ECDSA密碼都可以使用。