使用星號進行安全呼叫 (SRTP) 時,為什麼 SIP 設備需要客戶端證書?
我剛剛按照本教程為 Asterisk 添加了安全性:
https://wiki.asterisk.org/wiki/display/AST/Secure+Calling+Tutorial#SecureCallingTutorial-Keys
請注意,預設情況下,星號不會與 srtp 一起安裝。為了能夠遵循該教程,您必須使用 libsrtp 和 pjsip 安裝星號。以下是我安裝星號以支持 srtp 的方法:
# (1) make sure everything is up to date apt-get update apt-get upgrade # (2) Install dependencies that will be needed in order to install asterisk pjproject etc... apt-get install aptitude -y aptitude install build-essential -y aptitude install git -y aptitude install libssl-dev -y aptitude install zlib1g-dev -y aptitude install openssl -y aptitude install libxml2-dev -y aptitude install libncurses5-dev -y aptitude install uuid-dev -y aptitude install sqlite3 -y aptitude install libsqlite3-dev -y aptitude install pkg-config -y aptitude install libjansson-dev -y # (3) make sure everything is up to date again apt-get update apt-get upgrade # (4) Install libsrtp (library used to encrypt rtp) cd /root wget https://github.com/cisco/libsrtp/archive/v1.6.0.tar.gz tar -xzf v1.6.0.tar.gz cd libsrtp-1.6.0 ./configure CFLAGS=-fPIC --prefix=/usr make make runtest make install cd .. # (5) install pjproject git clone https://github.com/asterisk/pjproject pjproject cd pjproject ./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr --with-external-srtp make dep make make install cd .. # (6) Install Asterisk WITH SRTP AND PJPROJECT wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz tar xvf asterisk-13-current.tar.gz cd asterisk-13.19.2 ./configure --with-pjproject --with-ssl --with-srtp make make install make samples make config
無論如何,這不是問題的一部分。
因此,我按照教程進行操作,並且能夠進行加密呼叫。
當我重複這些步驟以連接所有電話時,我不明白為什麼我必須為每個 sip 設備生成證書。伺服器已經有一個證書為什麼電話需要另一個證書?換句話說,我不明白為什麼我必須執行教程中的步驟:
“我們為我們的 SIP 設備生成客戶端證書”
./ast_tls_cert -m client -c /etc/asterisk/keys/ca.crt -k /etc/asterisk/keys/ca.key -C phone1.mycompany.com -O "My Super Company" -d /etc/asterisk/keys -o malcolm
因此,出於好奇,我決定用其中一部手機跳過這一步。我沒有為電話 X 生成客戶端證書,出於某種原因,電話 X 仍然設法連接到星號並撥打電話。Phone X 在撥打電話時也會在螢幕上鎖定,這意味著通話已被加密。Asterisk 顯示呼叫正在通過 SRTP。我無法區分具有 CLIENT 證書的手機和手機 X。所以我的問題是為什麼教程告訴您生成客戶端證書?
我之前在不需要客戶端證書的情況下將 SRTP 與 Asterisk 一起使用,但正如所指出的,這允許您根據證書的頒發者控制訪問並保證 SIP 請求的來源。
這使您可以驗證電話是否由您設置,而不僅僅是隨機找到您的 SIP 伺服器的人。就像使用 TLS 時提供證書的伺服器一樣,您可以確認伺服器不只是一些隨機的中間人攻擊,因為很難生成有效的重複證書。如果您是唯一可以為您的 SIP 設備頒發證書的人,那麼只有擁有您證書的設備才是真正的設備,那麼其他一切都只是一個騙局。
從這裡開始,沿著相互認證的道路前進:https ://en.wikipedia.org/wiki/Client_certificate還有這個:https://en.wikipedia.org/wiki/AAA_(computer_security)
SRTP 只是一種加密機制,可讓您在開放網路上使用 Wireshark 之類的東西時防止其他人監聽對話。想想當地咖啡店的開放式無線網路。然而,僅 SRTP 本身並不足以保證安全性;僅僅因為通信是加密的,並不意味著源或目的地是有效的。