Ssl

檢測 1.2 之前的 TLS 版本是否已在 RHEL 7 上禁用

  • September 17, 2021

情況:我有一個 RHEL 7 虛擬機,我已經在上面安裝了 ActiveMQ (v5.16.0)(在 /opt/…)

幾天以來,我的一些客戶無法再使用顯然是 TLS 1.0 協議的 openwire SSL 埠(61617)連接。

錯誤資訊是:

Could not accept connection from tcp://10.10.170.1:45762: Client requested protocol TLSv1 is not enabled or supported in server context (Client requested protocol TLSv1 is not enabled or supported in server context)

當我使用以下命令從伺服器本身測試埠時:

openssl s_client -connect localhost:61617 -tls1
openssl s_client -connect localhost:61617 -tls1_1
openssl s_client -connect localhost:61617 -tls1_2

…前兩個命令未顯示 SSL 證書,但第三個命令正常工作。

我的問題是:

由於我們沒有更改 ActiveMQ 配置中的任何內容,我想知道是否在核心級別的 RHEL 上傳遞了一些安全更新檔?如果是這種情況,我可以在哪裡檢查伺服器?

在 ActiveMQ 方面,我們沒有更改任何關於 SSL 的內容,並且我們的 AMQ 傳輸配置從未定義過 transport.tls:

<transportConnector name="openwire+ssl" uri="ssl://0.0.0.0:61617?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>

請注意,相同的 ActiveMQ 配置仍在我們的生產伺服器上執行,這讓我覺得在作業系統級別上已經做了一些事情。

我不確定在哪裡發布這個問題:unix.SE、serverFault 或這裡;如果您認為它更多地依賴於另一個站點,請隨時遷移它。我將這個問題集中在 RHEL 上,但它也有助於其他人了解其他作業系統。

似乎最近的 openjdk 更新(在我們的例子中從 1.8.282 到 1.8.292)預設禁用 TLSv1.0 和 TLSv1.1。

更改記錄在以下票證中。

票的摘錄說:

禁用 TLS 1.0 和 1.1

解決方案

在 java.security 配置文件中的 jdk.tls.disabledAlgorithms 安全屬性中添加“TLSv1”和“TLSv1.1”。

您還可以查看RedHat 的發行說明

在第3.1.4 章。禁用 TLS 1.0 和 1.1 版本

TLS 協議的 TLS 1.0 和 1.1 版本不再被認為是安全的,並被更安全的現代 TLS 1.2 和 1.3 版本所取代。現在預設禁用 TLS 1.0 和 1.1 版本。如果遇到問題,您可以通過從 java.security 配置文件中的 jdk.tls.disabledAlgorithms 安全屬性中刪除 TLSv1 或 TLSv1.1 來重新啟用這些版本(風險自負)。

這解釋了為什麼我們的 ActiveMQ 突然停止為仍在使用已棄用協議的客戶端工作。最佳實踐是遷移這些客戶端,而不是重新啟用最弱的協議。

“有趣”的是,在您重新啟動 ActiveMQ 之前,服務 (ActiveMQ) 仍在使用最新的 JDK,因此修補日期可能與客戶端開始出現問題的日期不同。

由於 ActiveMQ 是客戶端連接的服務,ActiveMQ 是明確規定可以為 SSL/TLS 連接啟用哪些協議的服務。更改您的 transport.tls 文件並添加以下內容。

<transportConnector name="openwire+ssl" uri="ssl://0.0.0.0:61617?transport.enabledProtocols=TLSv1,TLSv1.1,TLSv1.2&maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>

這也將啟用所有弱化的協議。請記住,TLS 1.0 和 TLS 1.1 不被認為是安全的,不應在不謹慎的情況下使用

引用自:https://unix.stackexchange.com/questions/665501