简介
本文档介绍在Cisco Jabber中实施SIP OAuth模式的配置和基本故障排除步骤。
先决条件
要求
Cisco 建议您了解以下主题:
- Jabber软电话注册
- 统一通信管理器(UCM)
- 移动和远程访问(MRA)解决方案
使用的组件
支持SIP OAuth模式的最低软件版本:
- 思科UCM 12.5
- 思科Jabber 12.5
- 思科Expressway X12.5
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
限制
启用SIP OAuth模式时,不支持启用摘要身份验证和TFTP加密配置选项。
背景信息
主要好处
保护Cisco Jabber软电话的SIP信令和媒体当前涉及多个配置步骤。最困难的是安装和更新客户端证书(LSC),尤其是当Cisco Jabber设备在本地和外部之间切换时,以及保持CTL文件中的证书保持最新。
SIP OAuth模式允许Cisco Jabber软电话使用OAuth自描述令牌而不是客户端LSC证书在安全SIP接口上进行身份验证。在UCM SIP接口上支持OAuth,可为本地Jabber和MRA部署提供安全信令和媒体,而无需混合模式或CAPF操作。
SIP OAuth模式支持Cisco Jabber的主要优势:
- 启用永远在线加密,无需额外的管理负担。
- 无需混合模式(无CTL更新、证书维护等),即可为Cisco Jabber提供安全信令和媒体
- 无需在Jabber客户端上安装和维护LSC。
- 在多台设备(笔记本电脑/移动设备……)上使用LSC的挑战
- 在新设备上安装Jabber时,需要CAPF操作。
- MRA不支持CAPF操作。
整体架构
Cisco Jabber设备通过解析CSF配置文件(http://<cucmIP>:6970/<CSF-device-name>.cnf.xml)、配置文件示例(为简单起见而省略的某些行),识别SIP接口上启用了OAuth身份验证:
Cisco Jabber读取sipOAuthMode参数,以确定SIP OAuth模式是否已启用。此参数可以采用以下值之一:
- 0 - SIP OAuth已禁用
- 1 — 已启用SIP OAuth
如果启用SIP OAuth模式 ,则Jabber使用以下参数之一来确定SIP TLS连接的端口 — sipOAuthPort用于本地部署, sipMRAOAuthPort 用于基于MRA的部署。本示例显示默认值 — sipOAuthPort 5090和sipMRAOAuthPort 5091。这些值是可配置的,并且在每个CUCM节点上可能不同。
如果SIP OAuth模式被禁用,则Jabber将旧式非安全(5060)或安全(5061)端口用于SIP注册。
注意:Cisco UCM使用SIP电话OAuth端口(5090)通过TLS侦听来自Jabber OnPremise设备的SIP线路注册。但是,UCM使用SIP移动远程访问端口(默认为5091)通过mLTS从Expressway上的Jabber监听SIP线路注册。这两个端口都可配置。请参阅配置部分。
CallManager服务在sipOAuthPort和sipMRAOAuthPort上侦听。但是,两个端口都使用Tomcat证书和Tomcat-trust进行传入TLS/mTLS连接。确保您的Tomcat-trust存储能够验证MRA的SIP OAuth模式的Expressway-C证书以正确运行。
在重新生成Tomcat证书的情况下,CallManager进程必须随后在受影响的节点上重新启动。CCM进程需要在sipOAuth端口上加载和使用新证书。
此图像描述了Cisco Jabber在本地时的注册:
此图像描述了通过MRA注册Cisco Jabber的过程:
*Expressway-C节点使用AXL API将CN/SAN通知UCM其证书。UCM在建立双向TLS连接时使用此信息验证Exp-C证书。
配置 — 本地Jabber
注意:
确保在配置SIP OAuth模式之前完成以下步骤:
- MRA已配置,且连接在Unified Communication Manager(UCM)和Expressway之间建立(仅在MRA使用时适用)。
- UCM注册到智能或虚拟帐户,允许导出控制功能。
1.配置刷新登录。
为Cisco Jabber客户端配置使用OAuth访问令牌和刷新令牌的刷新登录。从Cisco Unified CM管理中,选择系统>企业参数。
2.配置OAuth端口。
选择System > Cisco Unified CM。这是可选步骤。图片显示默认值。可接受的可配置范围是1024到49151。对每台服务器重复相同的步骤。
3.启用SIP OAuth模式。
使用发布者的命令行界面全局启用SIP OAuth模式。运行命令:utils sipOAuth-mode enable。
4.重新启动Cisco CallManager服务。
从Cisco Unified Serviceability中,选择Tools > Control Center - Feature Services。在服务处于活动状态的所有节点上选择并重新启动Cisco CallManager服务。
5.在安全配置文件中配置OAuth支持。
从Cisco Unified CM管理中,选择系统>电话安全配置文件。选择Enable OAuth Authentication 以启用终端的SIP OAuth支持。
配置 — MRA上的Jabber
预安曲
在配置MRA上Jabber的SIP OAuth模式之前,请完成本文“配置 — 本地Jabber”一章中的步骤1-4。
步骤1.启用Refresh Login over MRA。
在MRA上使用Cisco Jabber配置SIP OAuth身份验证之前,必须在Expressway上启用刷新登录(也称为自描述令牌)。在Expressway-C上,导航至Configuration > Unified Communications > Configuration,并确保Authorize by OAuth Token with refresh参数设置为On。
步骤2.刷新Expressway-C中的Unified CM节点。
导航至Configuration > Unified Communications > Unified CM服务器。发现或刷新Expressway-C中的Unified CM节点。
注意:在Expressway-C中自动创建新的CEOAuth(TLS)区域。例如,CEOAuth <Unified CM name>。创建搜索规则,将从MRA上的Jabber发出的SIP请求代理到Unified CM节点。此区域使用TLS连接,无论Unified CM是否配置了混合模式。要建立信任,Expressway-C还会将主机名和主题备用名称(SAN)详细信息发送到Unified CM集群。请参阅本文的验证部分,确保配置正确。
步骤3.在安全配置文件中配置OAuth支持。
从Cisco Unified CM管理中,选择系统>电话安全配置文件。在分配给Cisco Jabber的配置文件上启用OAuth支持。
验证
1.检查SIP OAuth模式是否全局启用。
从Cisco Unified CM管理验证OAuth模式,选择System > Enterprise Parameters。
或者,使用Admin CLI — 运行命令:运行sql select paramvalue FROM processconfig WHERE paramname = 'ClusterSIPOAuthMode'
可能的值:0 — 表示禁用(默认),1 — 表示启用。
2.验证Expressway-C SAN条目已成功推送到CUCM。
Expressway-C通过AXL将其证书的CN/SAN详细信息发送到UCM。这些详细信息保存在expresswayconfiguration表中。每次发现或刷新Expressway-C中的Unified CM节点时,都会调用此过程。这些条目用于在UCM和Expressway-C之间建立信任。在MTLS连接到SIP MRA OAuth端口(默认为5091)期间,会根据这些条目检查Expressway-C证书的CN/SAN字段。 如果验证失败,则MTLS连接失败。
从Cisco Unified CM管理验证条目,选择Device > Expressway-C(从UCM 12.5.1Su1开始提供)
或者,使用Admin CLI — 运行命令:从expresswayconfiguration运行sql select *
3.验证Expressway-C上的CEOAuth区域。
导航至Expressway-C >配置>区域>区域。确保所有新创建的CEOAuth区域都处于活动状态。
4.验证CallManager进程在SIP OAuth端口上侦听。
从管理CLI运行命令:show open ports regexp 5090(默认SIP OAuth端口)
从管理CLI运行命令:show open ports regexp 5091(默认SIP MRA OAuth端口)
故障排除
Jabber日志示例(本地)
从Jabber日志角度记录端口5090上本地SIP OAuth注册的示例。
## CSF configuration retrieved 2020-03-30 13:03:18,278 DEBUG [0x000012d8] [src\callcontrol\ServicesManager.cpp(993)] [csf.ecc] [csf::ecc::ServicesManager::fetchDeviceConfig] - fetchDeviceConfig() retrieved config for CSFrado 2020-03-30 13:03:18,278 DEBUG [0x000012d8] [rc\callcontrol\ServicesManager.cpp(1003)] [csf.ecc] [csf::ecc::ServicesManager::fetchDeviceConfig] - Device Config:
10.10.10.1
ccm12pub
2000
5060
5061
5090
5091
…
1
## Setting SIP oauth mode to 1 2020-03-30 13:03:18,747 DEBUG [0x00002968] [ig\CertificateVerificationHelper.cpp(35)] [csf.ecc] [csf::ecc::CertificateVerificationHelper::setSipOauthMode] - sip OAuth Mode=1 ## Setting OAuth ports (5090 and 5091) for each UCM server 13:03:19,013 INFO [0x00002484] [\core\ccapp\config\config_parser.c(1491)] [csf.sip-call-control] [config_process_ccm_properties] - ccm0=10.10.10.1 ccm1=10.10.10.2 ccm2= sip_oauth_port_0=5090 sip_oauth_port_1=5090 sip_oauth_port_2=5090 length=0 13:03:19,013 INFO [0x00002484] [\core\ccapp\config\config_parser.c(1494)] [csf.sip-call-control] [config_process_ccm_properties] - sip_mar_oauth_port_0=5091 sip_mar_oauth_port_1=5091 sip_mar_oauth_port_2=5091 ## Open TLS connection to 5090 2020-03-30 13:03:18,528 DEBUG [0x00000e2c] [sipstack\sip_transport_connection.c(431)] [csf.sip-call-control] [sip_create_transport_connection] - [SIP][CONN][0] create TLS connection 10.10.10.10:5061-----10.10.10.1:5090. ## Sending register message 2020-03-30 13:03:19,200 DEBUG [0x00000e2c] [\sipcc\core\sipstack\ccsip_debug.c(1041)] [csf.sip-call-control] [platform_print_sip_msg] - sipio-sent---> REGISTER sip:10.10.10.1 SIP/2.0 Via: SIP/2.0/TLS 10.10.10.10:62162;branch=z9hG4bK00001188 From:
;tag=882323451234089000003bdd-00005eff To:
Call-ID: 88232345-12340017-00001c0b-00000cfa@10.10.10.10 Max-Forwards: 70 Date: Mon, 30 Mar 2020 11:03:19 GMT CSeq: 2270 REGISTER User-Agent: Cisco-CSF Contact:
;+sip.instance="
";+u.sip!devicename.ccm.cisco.com="CSFrado";+u.sip!model.ccm.cisco.com="503";video Supported: replaces,join,sdp-anat,norefersub,resource-priority,extended-refer,X-cisco-callinfo,X-cisco-serviceuri,X-cisco-escapecodes,X-cisco-service-control,X-cisco-srtp-fallback,X-cisco-monrec,X-cisco-config,X-cisco-sis-7.0.0,X-cisco-xsi-8.5.1,X-cisco-graceful-reg,X-cisco-duplicate-reg ## 407 Proxy Authentication Required 2020-03-30 13:03:19,310 DEBUG [0x00000e2c] [\sipcc\core\sipstack\ccsip_debug.c(1041)] [csf.sip-call-control] [platform_print_sip_msg] - sipio-recv<--- SIP/2.0 407 Proxy Authentication Required Via: SIP/2.0/TLS 10.10.10.10:62162;branch=z9hG4bK00001188 From:
;tag=882323451234089000003bdd-00005eff To:
;tag=441122775 Date: Mon, 30 Mar 2020 11:03:31 GMT Call-ID: 88232345-12340017-00001c0b-00000cfa@10.10.10.10 Server: Cisco-CUCM12.5 CSeq: 2270 REGISTER Proxy-Authenticate: Bearer realm="ccmsipline" Content-Length: 0 ## Register with OAuth token included in the Proxy-Authorization header 2020-03-30 13:03:19,310 DEBUG [0x00000e2c] [\sipcc\core\sipstack\ccsip_debug.c(1041)] [csf.sip-call-control] [platform_print_sip_msg] - sipio-sent---> REGISTER sip:10.10.10.1 SIP/2.0 Via: SIP/2.0/TLS 10.10.10.10:62162;branch=z9hG4bK00004a82 From:
;tag=882323451234089000003bdd-00005eff To:
Call-ID: 88232345-12340017-00001c0b-00000cfa@10.10.10.10 Max-Forwards: 70 Date: Mon, 30 Mar 2020 11:03:19 GMT CSeq: 2271 REGISTER User-Agent: Cisco-CSF Contact:
;+sip.instance="
";+u.sip!devicename.ccm.cisco.com="CSFrado";+u.sip!model.ccm.cisco.com="503";video Proxy-Authorization: Bearer token="
" Supported: replaces,join,sdp-anat,norefersub,resource-priority,extended-refer,X-cisco-callinfo,X-cisco-serviceuri,X-cisco-escapecodes,X-cisco-service-control,X-cisco-srtp-fallback,X-cisco-monrec,X-cisco-config,X-cisco-sis-7.0.0,X-cisco-xsi-8.5.1,X-cisco-graceful-reg,X-cisco-duplicate-reg Reason: SIP;cause=200;text="cisco-alarm:111 Name=CSFrado ActiveLoad=Jabber_for_Windows-12.8.0.51973 InactiveLoad=Jabber_for_Windows-12.8.0.51973 Last=Application-Requested-Destroy" Expires: 3600 Content-Type: multipart/mixed; boundary=uniqueBoundary Mime-Version: 1.0 Content-Length: 1271 # 200 OK for Register 2020-03-30 13:03:19,325 DEBUG [0x00000e2c] [\sipcc\core\sipstack\ccsip_debug.c(1041)] [csf.sip-call-control] [platform_print_sip_msg] - sipio-recv<--- SIP/2.0 200 OK Via: SIP/2.0/TLS 10.10.10.10:62162;branch=z9hG4bK00004a82 From:
;tag=882323451234089000003bdd-00005eff To:
;tag=1915868308 Date: Mon, 30 Mar 2020 11:03:31 GMT Call-ID: 88232345-12340017-00001c0b-00000cfa@10.10.10.10 Server: Cisco-CUCM12.5 CSeq: 2271 REGISTER Expires: 120 Contact:
;+sip.instance="
";+u.sip!devicename.ccm.cisco.com="CSFrado";+u.sip!model.ccm.cisco.com="503";video;x-cisco-newreg Supported: X-cisco-srtp-fallback,X-cisco-sis-9.1.0 Content-Type: application/x-c
场景1 - SIP OAuth注册端口不匹配
在SIP OAuth模式下,本地Jabber设备无法向UCM注册。UCM发送403以获取注册消息:
SIP/2.0 403 Forbidden Via: SIP/2.0/TLS 10.5.10.121:50347;branch=z9hG4bK00005163 From:
;tag=005056867e66010a00006698-00002a32 To:
;tag=1946377502 Date: Fri, 03 Aug 2018 05:00:18 GMT Call-ID: 00505686-7e660005-0000216b-0000366f@10.5.10.121 Server: Cisco-CUCM12.5 CSeq: 363 REGISTER Retry-After: 35 Warning: 399 UCM2-PUB "SIP OAuth Registration port Mismatch" Content-Length: 0
可能的解决方案:确保满足以下条件:
- OAuth模式已全局启用
- 与设备关联的设备安全配置文件已启用OAuth支持
- 在5090端口上通过TLS(而非mTLS)接收的消息
场景2 — 来自Expressway的未知CA
Expressway-C无法在sipMRAOAuthport上与UCM建立mTLS握手(默认5091)。 Expressway-C不信任UCM共享的证书,并在mTLS设置期间以未知CA消息作出响应。
可能的解决方案:CallManager服务在mTLS握手期间发送其Tomcat证书。确保您的Expressway-C信任UCM的Tomcat证书的签名者。
场景3 — 来自UCM的未知CA
Expressway-C无法在sipMRAOAuthport上与UCM建立mTLS握手(默认5091)。UCM不信任Expressway共享的证书,并在mTLS设置期间以未知CA消息作出响应。
从此通信捕获数据包(UCM 10.x.x.198、Expressway-C 10.x.x.182):
可能的解决方案:UCM在SIP OAuth端口的mTLS握手期间使用Tomcat信任存储验证传入证书。确保Expressway-C的签名者证书已正确上传到UCM。