Security

使用星號進行安全呼叫 (SRTP) 時,為什麼 SIP 設備需要客戶端證書?

  • March 20, 2018

我剛剛按照本教程為 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 本身並不足以保證安全性;僅僅因為通信是加密的,並不意味著源或目的地是有效的。

引用自:https://serverfault.com/questions/903640