高階訊息佇列協議規範 5 安全

2021-10-16 08:57:38 字數 1299 閱讀 6143

高階訊息佇列協議規範 5.安全

5.1 安全層

安全層被用來建立乙個授權的或者是加密的傳輸,它位於常規的amqp的通訊之上。

對於安全層的幀和協議定義被期望定義於amqp規範的外部,作為tls的情況即(rfc5246)

對此的乙個異常是sasl(rfc4422)安全層依賴於它的主協議提供幀。因此5.3部分定義了

對於sasl必要的功能,當乙個安全層中止時,tcp連線必須 被關閉,通過先關閉向外的流量、

再讀入向內的流量,直到它被中止。

5.2 tls

為了建立乙個tls會話,在使用tls體系通訊之前每一端必須開始傳送乙個協議頭部。

協議頭部包括了乙個amqp這四個大寫字母,緊接著是乙個協議的編號,再下來是三個無符號

的位元組,表示規範的主版本號,子版本號和順序編號(當前是1.0.0)如下是8個位元組的序列圖

如下的圖表示了在建立乙個tls安全層時的互動過程:

當使用tls安全層來保障安全時,如下的規則被應用:

tls的客戶端和tls的服務端相應地被確定為tcp的客戶端和服務端。

tls的客戶端應該使用服務端的名稱的顯示擴充套件,具體描述是在rfc4366。

如果這麼做的話,如果這不同於在sasl-init和開放幀中的主機名稱,

發生的情況是未定義的。

amqp的**能使用這個域來確定連線到客戶端的正確的後端的服務,

如果tls的客戶端的認證被使用的話,amqp的**能確定驗證客戶端憑證的域。

tls客戶端必須驗證tls伺服器端宣告的認證

實現可能選擇使用tls進行單方向的關閉,例如乙個應該初始化關閉,使用了close_notify,

沒有必要等待對方的響應,可能關閉tcp套接字的寫中止。

5.2.1 可選的建立

在特定的情況下,例如透過防火牆的連線,使用如上的程式,它可能無法建立乙個tls安全層

作為可選的,實現可能執行乙個純的tls伺服器,例如這不期望有乙個初始化的tls的握手。

為此iana的服務名稱是amqps,埠是安全埠5671 。如果有操作上的必要的話,實現

可能也選擇其它的埠來執行這個純tls伺服器。(例如透過乙個合法的防火牆的通道僅期望

在443埠上有tls的傳輸)

5.2.2 常量的定義

tls-major         1 協議的主版本號

tls-minor          0 協議的子版本號

tls-revision     0 協議的發布的順序號

訊息佇列 執行緒安全

為什麼在互斥量的基礎上還需要加條件變數?需要注意的是 include int pthread cond wait pthread cond t cv,pthread mutex t mutex 返回值 函式成功返回0 任何其他返回值都表示錯誤 函式將解鎖mutex引數指向的互斥鎖,並使當前執行緒阻塞...

springboot高階 訊息佇列相關

訊息佇列是什麼,有什麼好處?我們可以把訊息佇列比作是乙個存放訊息的容器,當我們需要使用訊息的時候可以取出訊息供自己使用。訊息佇列是分布式系統中重要的元件,使用訊息佇列主要是為了通過非同步處理提高系統效能和削峰 降低系統耦合性。目前使用較多的訊息隊activemq,rabbitmq,kafka,roc...

高階訊息佇列規範 4 2 宣告乙個事務

高階訊息佇列規範 4.2 宣告乙個事務 作為事務性的資源的容器的行為定義了乙個特定的目標,功能上是乙個協調器,事務性的控制器建立了乙個控制性的鏈結到這個目標點。注意的是到這個協調 器的鏈結是不能中斷的。為了開始這個事務性的工作,事務性的控制器需要從資源處得到乙個事務性的 識別符號。通過向協調器傳送乙...