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 というエラーになります。
自己署名の証明書のためと思われます。また、再起動するとチェックが解除されていますので、起動のたびにチェックをする必要があります。
これが、フリー版の制限なのか、自己署名証明書のせいなのかはわかりません。;)

“Asterisk TLSとSRTPでより安全なコール (パート1: TLS編)” への2件の返信

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です