用戶端應用程式與OSS之間的通訊使用傳輸層安全TLS(Transport Layer Security)進行加密。 TLS是一種標準的加密協議,可確保通過互連網進行通訊的用戶端與服務端之間的隱私和資料完整性。您可以通過OSS服務端設定TLS版本。設定TLS版本後,用戶端僅支援使用對應版本TLS與OSS之間發送和接收請求,以滿足通訊鏈路的安全性要求。
前提條件
RAM使用者必須擁有以下許可權:oss:PutTLSVersion
、oss:GetTLSVersion
。具體操作,請參見為RAM使用者授權自訂的權限原則。
TLS版本說明
目前TLS支援四個版本,分別為1.0、1.1、1.2和1.3。各版本使用情境以及支援主流瀏覽器說明如下:
協議 | 說明 | 適用情境 | 支援的主流瀏覽器 |
TLS 1.0 | 使用的主要密碼編譯演算法包括RSA、DES、3DES等。TLS 1.0存在一些安全性漏洞,容易受到各種攻擊(例如BEAST和POODLE等)。對當今網路連接的安全已失去應有的保護效力,不符合PCI DSS合規判定標準。 | 由於存在一些安全性漏洞,TLS 1.0不再被廣泛推薦使用。在絕大多數情況下,建議升級到更安全的TLS版本。 |
|
TLS 1.1 | 主要改進了對安全性的支援,去除了部分已知的漏洞,增加了對更強大密碼編譯演算法的支援,例如AES、RSA、SHA-256等。 | 需要相對較高安全層級的情境,但不需求最新的TLS特性的環境。 |
|
TLS 1.2 | 進一步加強了對安全性的支援,並增加了一些新特性例如伺服器名稱指示(SNI)、擴充握手協議等。支援的密碼編譯演算法包括AES-GCM、AES-CBC、ECDHE等。 | 大多數常見的安全通訊情境,包括Web應用程式、電子商務網站、電子郵件、Virtual Private Cloud(VPN)等。 |
|
TLS 1.3 | 在安全性、效能和隱私方面進行了重大改進。刪除了一些不安全的密碼編譯演算法,增加了更強大的金鑰交換演算法和密碼編譯演算法,減少了握手過程的延遲,還提供了更好的前向保密和身分識別驗證機制。 | 對安全性要求較高、希望獲得更好效能和隱私保護的情境,如金融機構、大型互連網公司、政府機構等。 |
|
注意事項
不建議將Bucket設定為僅允許TLS 1.0或者TLS 1.1這兩個低版本協議,建議至少包含TLS 1.2主流版本。
OSS將TLS 1.2置為預設版本,原因是該版本為當前主流版本。如果未選擇TLS 1.2版本,會造成一些主流用戶端無法正常訪問OSS。
降低TLS版本(例如從TLS 1.2降至TLS 1.1或者TLS 1.0)或者關閉TLS版本設定可能會帶來安全性和合規性問題,建議您謹慎操作。
禁用某個TLS版本前,需要確認當前無用戶端僅支援使用將被禁用的版本。
操作步驟
使用OSS控制台
使用REST API
常見問題
如何判斷當前使用的TLS版本?
在用戶端未指定TLS版本的情況下,您可以通過以下命令判斷當前用戶端與服務端之間協商使用的TLS版本。
openssl s_client -connect <Bucket>.<Endpoint>:443 -servername <Bucket>.<Endpoint>
程式碼範例中涉及的參數說明如下:
參數 | 說明 |
Bucket | 填寫OSS儲存空間名稱。 |
Endpoint | 支援外網Endpoint、內網Endpoint以及自訂網域名。 |
您可以從返回結果中擷取TLS版本。
如何判斷TLS版本是否設定成功?
當您的Bucket配置為僅允許TLS 1.2版本訪問時,如果TLS版本設定成功,會出現以下三種情況:
用戶端指定TLS 1.2版本時可以成功訪問服務端
openssl s_client -connect <Bucket>.<Endpoint>:443 -servername <Bucket>.<Endpoint> -tls1_2
程式碼範例中涉及的參數說明如下:
參數
說明
Bucket
填寫OSS儲存空間名稱。
Endpoint
支援外網Endpoint、內網Endpoint以及自訂網域名。
返回結果如下:
用戶端未指定TLS版本(但用戶端本身支援TLS 1.2版本)時可以成功訪問服務端
openssl s_client -connect <Bucket>.<Endpoint>:443 -servername <Bucket>.<Endpoint>
返回結果如下:
用戶端指定非TLS 1.2版本(例如TLS 1.1)時無法正常訪問服務端
openssl s_client -connect <Bucket>.<Endpoint>:443 -servername <Bucket>.<Endpoint> -tls1_1
返回結果如下: