Asterisk TLSとSRTPでより安全なコール (パート2: SRTP編)

前回はTLS設定で呼制御の暗号化を試みました。今回は通話の暗号化を試みます。

1. sip.conf の変更
/etc/asterisk/sip.conf のSIPクライアント(例 2001 )の定義に “encryption=yes” を追加します。

[2001]
type=peer
secret=password    ; this is NOT a secure password
host=dynamic
...(省略)...
transport=tls
encryption=yes

2. クライアントの設定
Zoiper で 暗号化 を有効にして確認します。

Preferences -> Accounts -> Advanced -> Use rport media をチェック
Preferences -> Accounts -> Advanced -> Use TLS with SDES SRTP を選択

以上です。

通話を開始すると Zoiper 上にカギのアイコンが表示されます。

また、今回の設定は Zoiper 以外にも AGEphone Business の評価版での試用をしました。
サポートの方に教えて頂きました AGEphone Business の設定方法は下記のとおりです。

Windows - AGEphone Biz3
TLS
- アカウント設定 > 接続種別 = TLS
- アカウント設定 > 全般の設定 > トランスポートにTLSを使う = ON
SRTP
- アカウント設定 > 全般の設定 > メディア暗号化(SRTP) = ON

Asterisk TLSとSRTPでより安全なコール (パート1: TLS編)

Asterisk には TLS(Transport Layer Security)SRTP(Secure Real-time Transport Protocol) により通信を安全に行う方法があります。

TLS は Asterisk と SIPクライアントの SIP によるやりとりを暗号化し、SRTP は電話の音声ストリームを暗号化します。
ここでは CentOS6.x 上で Asterisk 13 をソースをビルドしてインストール方法は省略します。ただし、Asterisk 13 のビルドは下記の必要なパッケージをインストールしてから行ってください。

1. 必要なパッケージのインストール
まず、暗号化にに必要な OpenSSL と LibSRTP をインストールします。

# yum install openssl openssl-devel
# yum install libsrtp libsrtp-devel

2. 自己署名証明書の作成
Asterisk で利用する自己署名証明書を生成するために Asterisk のソースディレクトリ下の contrib/scripts/に ast_tls_cert という便利なツールが付属しています。これで サーバー証明書とクライアント証明書を生成します。

# mkdir /etc/asterisk/keys
# ./ast_tls_cert -C foo.com -O "Foo Company" -d /etc/asterisk/keys
# ./ast_tls_cert -m client -c /etc/asterisk/keys/ca.crt -k /etc/asterisk/keys/ca.key -C foo.com -O "Foo Company" -d /etc/asterisk/keys -o sipclient

※ foo.com や "Foo Company" は実際のサーバーのFQDN またはIPアドレス、社名に置き換えてください。また、コマンドの途中でパスフレーズを数回入力するように促されますので適切なものを入力します。

コマンドを実行すると以下のファイルが /etc/asterisk/keys ディレクトリに生成されます。

# ll /etc/asterisk/keys 

asterisk.crt
asterisk.csr
asterisk.key
asterisk.pem
sipclient.crt
sipclient.csr
sipclient.key
sipclient.pem
ca.cfg
ca.crt
ca.key
tmp.cfg

3. sip.conf の変更
/etc/asterisk/sip.conf に以下を追加します。

tlsenable=yes
tlsbindaddr=0.0.0.0:5061
tlscertfile=/etc/asterisk/keys/asterisk.pem
tlscafile=/etc/asterisk/keys/ca.crt
tlscipher=ALL
tlsclientmethod=tlsv1

続けて、SIPクライアント(例 2001 )の定義に “transport=tls” を追加します。

[2001]
type=peer
secret=password    ; this is NOT a secure password
host=dynamic
...(省略)...
transport=tls

4. クライアントの設定
Zoiper で TLS を有効にして確認します。

Preferences -> Accounts -> Advanced -> Use rport をチェック
Preferences -> Accounts -> Advanced -> Use TLS transport を選択
Preferences -> Advanced -> Security -> Extra CA certificate に sipclient.pem ファイルを選択
Preferences -> Advanced -> Security -> Protocol suite: から TLS v1 を選択
Preferences -> Advanced -> Security -> Disable certificate verification をチェック ※1

※1 このチェックボックスは DANGEROUS DO NOT USE! と表記されていますが、これをチェックしないと
Certificatge: Issuer untrusted/not found/not valid/wrong purpose というエラーになります。
自己署名の証明書のためと思われます。また、再起動するとチェックが解除されていますので、起動のたびにチェックをする必要があります。
これが、フリー版の制限なのか、自己署名証明書のせいなのかはわかりません。;)

Zoiper ソフトフォン

Asterisk を使うには高いIP電話機を購入しなくてもフリーで使えるソフトフォンとマイク、スピーカーか、ヘッドセットがあれば十分です。

今日は、Zoiper Free を使ってみました。ここでは、以前作成した Asterisk SIP.conf テンプレートに設定したアカウントと、Asterisk extensions.conf ‘same =>’ オペレータ で作成したダイアルプランを使用します。

ダウンロード

http://www.ziper.com から “Download” をクリックして、”Zoiper Communicator” / “Software” から “Windows” をクリックすると Zoiper Free の “Download Free” ボタンをクリックするとダウンロードできます。

機能制限はありますが、通話で使う分には問題ないと思います。

インストール

インストールは簡単です。ダウンロードした Zoiper_Free_2.39_Installer.exe をダブルクリックして起動します。

インストールが実行されるのでステップ1で “Next” ボタンをクリックすると、ステップ2で “License Agreement” が表示されますので、 “I Agree” ボタンをクリックして、順次 “Next” ボタンをクリックして行き、最後に “Finish” ボタンをクリックします。

SIP アカウントの設定

インストールが完了したら、SIP アカウントを設定します。

メニューまたは、デスクトップに “Zoiper Free” のショートカットをダブルクリックして Zoiper Free を起動します。すると以下の画面が表示されます。

(もし、この画面が出てこない場合は、メイン画面のツールバー右端のスパナのアイコンをクリックして、”Zoper Options” ダイアログ左部ツリービューから “Add new SIP account” をクリックします。)

ここでは、以下のように “Name” に “201” を入力して設定を行います。

Zoiper_Add_Sip1

次に、
“Domain” へ Asterisk サーバーのIPアドレスを 入力
“Username” へ  201 (sip.conf で定義)
“Password” へパスワード (sip.conf で定義)
“Caller ID Name” へ発信者名

を入力して “OK” ボタンをクリックします。

Zoper_Add_Sip2

すると、入力情報が正しければ “201 (Registered) (SIP)” と表示されます。

Zoiper_Registered

ダイアル発信

これで通話ができます。”Phone to dial” に 1000 を入力して、ツールバー左部の青い受話器のボタンをクリックします。”Hello world” が聞こえるはずです。

 

最後に

私がいろいろ試した限りでは音声も途切れることなく通話ができます。無料で使え、通話品質も良く、アカウントも複数登録して切り替えられるのでAsterisk の試用にはもってこいです。

 

Grandstream電話機とAsterisk

Grandstream の電話機を評価する機会があったので Asterisk と使用したときの雑記です。あくまでも個人の感想です。

左から:
GXP1400
GXP280
GXP2100

 

 

 

 

 

OLIO SPEC の GS-L11 に CentOS 5.7 と Asterisk 1.4.43 をインストールして動作させました。GS-L11 に CentOS と Asterisk のインストールは特に問題なく行えました。

それぞれの電話機に番号を割り当て Asterisk にレジストし内線通話の検証。

GXP280 は受話器を耳に当てたときに「さー」というノイズらしき音がすることにすぐ気づきました。 GXP2100 で確認するとこちらは気になる音はせず、GXP1400 はわずかに「さー」という音がはいってきます。

通話は会話がとぎれるような感じがときどきします。ぶちぶちと途切れるのわけではないのですが、ある程度しゃべり続けていると「すうっ」と無音になりそうな感じで、通話していて違和感を感じるときがありました。このあたりの感覚の説明がうまく表現できません。上記写真に白い電話機の1部分が写っているのは SANYO SIP-2100 です。同じ設定でもこちらの電話機ではまったく違和感を感じることはないのですが。

受話器を置いた感じが悪いです。受話器をおいたつもりでもフックされてないようなとき(通話がきれていない)があります。「ガチャッ」とすこし力を入れて受話器を置いたほうが確実です。

電話機のボタンは英語表記。液晶に表示される文字は日本語切り替えがありました。

天気、株価、通貨情報を取得する機能もついてました。定期的に情報を更新するようになっていました。

転送は「Transfer」ボタンではブラインド転送(アンアテンドモード転送?)になりますので、 Asterisk 側の設定で「#」をアテンドモード転送に設定しました。

着信するとスピーカーフォンで通話ができる「自動応答機能」もありました。Webブラウザからの管理画面で設定可能です。使用者の状況によってこの機能は便利です。