FreeSWITCH ( FusionPBX ) + Docker

Linphoneを使用する際の注意点

Linphoneで AVPF ( Audio/Video Profile with Feedback : RFC 4585 ) を有効にすると、SRTPでの通信でnull/0となります。

FreeSWITCHは AVPF をデフォルトではサポートしていないため、SRTPで通信する場合はAVPFをオフにします。

暗号スイートの整合性チェック

Linphoneの暗号化スイートをAES_CM_128_HMAC_SHA1_80に指定しないと双方の通話が暗号化されない問題。原因はFreeSwitchのSRTP暗号スイートの正規表現が、Linphoneが提示するものと一致しない(以下のAEAD末尾に_8が欠如)ためでした。

Dialplan Managerrtp_has_cryptでLinphoneからの正規表現を追加。 (AEADのリストに AEAD_AES_128_GCMAEAD_AES_256_GCM を追加)

Dialplan Manager

rtp_has_cryptの編集

Linphoneの暗号スイート

  • AEAD_AES_128_GCM
  • AES_CM_128_HMAC_SHA1_80
  • AEAD_AES_256_GCM
  • AES_256_CM_HMAC_SHA1_80

FreeSWITCHの暗号スイート

  • AEAD_AES_256_GCM_8
  • AEAD_AES_128_GCM_8
  • AES_CM_256_HMAC_SHA1_80
  • AES_CM_192_HMAC_SHA1_80
  • AES_CM_128_HMAC_SHA1_80
  • AES_CM_256_HMAC_SHA1_32
  • AES_CM_192_HMAC_SHA1_32
  • AES_CM_128_HMAC_SHA1_32
  • AES_CM_128_NULL_AUTH
SRTP方式 使える暗号 鍵交換方法 備考
SDES-SRTP AES_CM_128_HMAC_SHA1_80/32 SDP 内の「a=crypto」で鍵交換 GCM は使えない
DTLS-SRTP AEAD_AES_128_GCM, AES_CM_128_HMAC_SHA1_80 など DTLS handshake(証明書使用) GCMが使える
ZRTP 端末同士のDH交換 ZRTP handshake GCM 非対応(AES_CM)

注) 同じ暗号スイートでもLinphoneとFreeSWITCHで記述形式が異なる。Linphoneでビデオ通話もSRTP対応にするには、設定で Media encryption mandatory を有効にすること。