簡介
本文描述如何排除IP電話的Corporate Directory(公司目錄)功能中的「Host Not Found(未找到主機)」問題。
背景資訊
與本檔案相關的重要資訊為:
- 公司目錄是思科提供的預設IP電話服務,可隨Cisco Unified Communications Manager(CUCM)自動安裝。
- 有關電話訂購各種電話服務的資訊儲存在資料庫的telecasterservice、telecasterserviceparameter、telecastersubscribedparameter和telecastersubscribedservice表中。
- 在電話上,當您選擇Corporate Directory選項時,電話會向其中一個CUCM伺服器傳送HTTP或HTTPS請求,並作為XML對象作為HTTP(S)響應返回。如果是HTTPS,則這也取決於連線到TVS服務的電話來驗證HTTPS的證書。在支援Midlet的電話上,這可以在電話Midlet中實施,並受Services Provisioning設定的影響。
重要資訊
- 請澄清在訪問「目錄」或「公司目錄」時是否出現了問題。
- 在Corporate Directory服務下, Service UR欄位設定為什麼?
- 如果URL設定為Application:Cisco/CorporateDirectory,則根據電話的韌體版本,電話會發出HTTP或HTTPS請求。
- 預設情況下,使用韌體版本9.3.3及更高版本的電話會發出HTTPS請求。
- 當服務URL設定為Application:Cisco/CorporateDirectory時,電話會向其CallManager(CM)組中的第一個伺服器傳送HTTP(S)請求。
- 確定電話與傳送HTTP(S)請求的伺服器之間的網路拓撲。
- 在可能丟棄/阻止HTTP(S)流量的路徑中,要注意防火牆、WAN最佳化器等。
- 如果正在使用HTTPS,請確保電話與電視伺服器之間的連線,並且電視正常運行。
工作場景
在此場景中,電話服務URL設定為Application:Cisco/CorporateDirectory,並且電話使用HTTPS。
此示例顯示具有正確URL的電話配置檔案。
<phoneService type="1" category="0">
<name>Corporate Directory</name>
<url>Application:Cisco/CorporateDirectory</url>
<vendor></vendor>
<version></version>
</phoneService>
通過電話控制檯日誌,您可以驗證這些步驟。
- 電話使用HTTPS URL。
7949 NOT 11:04:14.765155 CVM-appLaunchRequest: [thread=AWT-EventQueue-0]
[class=cip.app.G4ApplicationManager] Creating application module -
Corporate Directory
7950 ERR 11:04:14.825312 CVM-XsiAppData::getCdUrl:
[thread=appmgr MQThread]
[class=xxx.xxx.xx] Using HTTPS URL
- 電話上不能使用從目錄伺服器提供給電話的Tomcat Web證書。因此,電話會嘗試透過信任驗證服務(TVS)驗證憑證。
7989 ERR 11:04:15.038637 SECD: -HTTPS cert not in CTL, <10.106.111.100:8443>
7990 NOT 11:04:15.038714 SECD: -TVS service available, can attempt via TVS
- 電話首先在TVS快取中查詢,如果未找到,它會與TVS伺服器聯絡。
7995 NOT 11:04:15.039286 SECD: -TVS Certificate Authentication request
7996 NOT 11:04:15.039394 SECD: -No matching entry found at cache
- 由於與TVS的連線也是安全的,因此已完成證書身份驗證,如果成功則列印此消息。
8096 NOT 11:04:15.173585 SECD: -Successfully obtained a TLS connection
to the TVS server
- 電話現在會傳送驗證憑證的請求。
8159 NOT 11:04:15.219065 SECD: -Successfully sent the certificate Authentication
request to TVS server, bytes written : 962
8160 NOT 11:04:15.219141 SECD: -Done sending Certificate Validation request
8161 NOT 11:04:15.219218 SECD: -Authenticate Certificate : request sent to
TVS server - waiting for response
- TVS的響應「0」表示身份驗證成功。
8172 NOT 11:04:15.220060 SECD: -Authentication Response received, status : 0
- 系統將顯示此消息,然後您會看到響應。
8185 NOT 11:04:15.221043 SECD: -Authenticated the HTTPS conn via TVS
8198 NOT 11:04:15.296173 CVM-[truncated] Received
HTTP/1.1 200 OK^M
X-Frame-Options: SAMEORIGIN^M
Set-Cookie: JSESSIONID=660646D3655BB00734D3895606BCE76F;
Path=/ccmcip/; Secure; HttpOnly^M
Content-Type: text/xml;charset=utf-8^M
Content-Length: 966^M
Date: Tue, 30 Sep 2014 11:04:15 GMT^M
Server: ^M
^M
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><CiscoIPPhoneInput>
<Title>Directory Search</Title><Prompt>Enter search criteria</Prompt><SoftKeyItem>
<Name>Search</Name><Position>1</Position><URL>SoftKey:Submit</URL></SoftKeyItem>
<SoftKeyItem><Name><<</Name><Position>2</Position><URL>SoftKey:<<</URL>
</SoftKeyItem><SoftKeyItem><Name>Cancel</Name><Position>3</Position>
<URL>SoftKey:Cancel</URL></SoftKeyItem>
<URL>https://10.106.111.100:8443/ccmcip/xmldirectorylist.jsp</URL>
<InputItem><DisplayName>First Name</DisplayName>
<QueryStringParam>f</QueryStringParam><InputFlags>A</InputFlags>
<DefaultValue></DefaultValue></InputItem><InputItem>
<DisplayName>Last Name</DisplayName><QueryStringParam>l</QueryStringParam>
<InputFlags>A</InputFlags><DefaultValue></DefaultValue></InputItem><InputItem>
<DisplayName>
證書身份驗證過程類似於在未知證書的電話聯絡人信任驗證服務中討論的內容。
通過電話端收集的資料包捕獲(PCAP),您可以使用此過濾器 — tcp.port==2445驗證TVS通訊。
在同時電視日誌中:
- 檢視傳輸層安全(TLS)握手的跟蹤。
- 接下來,檢視傳入的十六進位制轉儲。
04:04:15.270 | debug ipAddrStr (Phone) 10.106.111.121
04:04:15.270 |<--debug
04:04:15.270 |-->debug
04:04:15.270 | debug 2:UNKNOWN:Incoming Phone Msg:
.
.
04:04:15.270 | debug
HEX_DUMP: Len = 960:
04:04:15.270 |<--debug
04:04:15.270 |-->debug
04:04:15.270 | debug 57 01 01 00 00 00 03 ea
.
<< o/p omitted >>
.
04:04:15.271 | debug MsgType : TVS_MSG_CERT_VERIFICATION_REQ
- TVS檢索頒發者詳細資訊。
04:04:15.272 |-->CDefaultCertificateReader::GetIssuerName
04:04:15.272 | CDefaultCertificateReader::GetIssuerName got issuer name
04:04:15.272 |<--CDefaultCertificateReader::GetIssuerName
04:04:15.272 |-->debug
04:04:15.272 | debug tvsGetIssuerNameFromX509 - issuerName :
CN=cucm10;OU=TAC;O=Cisco;L=Blore;ST=KN;C=IN and Length: 43
04:04:15.272 |<--debug
- TVS驗證證書。
04:04:15.272 | debug tvsGetSerialNumberFromX509 - serialNumber :
6F969D5B784D0448980F7557A90A6344 and Length: 16
04:04:15.272 | debug CertificateDBCache::getCertificateInformation -
Looking up the certificate cache using Unique MAP ID :
6F969D5B784D0448980F7557A90A6344CN=cucm10;OU=TAC;O=Cisco;L=Blore;ST=KN;C=IN
04:04:15.272 | debug CertificateDBCache::getCertificateInformation -
Certificate compare return =0
04:04:15.272 | debug CertificateDBCache::getCertificateInformation -
Certificate found and equal
- TVS將響應傳送到電話。
04:04:15.272 | debug 2:UNKNOWN:Sending CERT_VERIF_RES msg
04:04:15.272 | debug MsgType : TVS_MSG_CERT_VERIFICATION_RES
電話服務URL設定為Application:Cisco/CorporateDirectory,電話使用HTTP
註:服務和安全服務URL硬編碼為HTTP URL,而不是使用更早的電話韌體版本。但是,在預設情況下使用HTTP的電話韌體中也會看到相同的事件序列。
電話的配置檔案具有正確的URL。
<phoneService type="1" category="0">
<name>Corporate Directory</name>
<url>Application:Cisco/CorporateDirectory</url>
<vendor></vendor>
<version></version>
</phoneService>
通過電話控制檯日誌,您可以驗證這些步驟。
7250 NOT 11:44:49.981390 CVM-appLaunchRequest: [thread=AWT-EventQueue-0]
[class=cip.app.G4ApplicationManager] Creating application module -
Corporate Directory/-838075552
7254 NOT 11:44:50.061552 CVM-_HTTPMakeRequest1: Processing Non-HTTPS URL
7256 NOT 11:44:50.061812 CVM-_HTTPMakeRequest1() theHostname: 10.106.111.100:8080
7265 NOT 11:44:50.233788 CVM-[truncated] Received
HTTP/1.1 200 OK^M
X-Frame-Options: SAMEORIGIN^M
Set-Cookie: JSESSIONID=85078CC96EE59CA822CD607DDAB28C91;
Path=/ccmcip/; HttpOnly^M
Content-Type: text/xml;charset=utf-8^M
Content-Length: 965^M
Date: Tue, 30 Sep 2014 11:44:50 GMT^M
Server: ^M
^M
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><CiscoIPPhoneInput>
<Title>Directory Search</Title><Prompt>Enter search criteria</Prompt><SoftKeyItem>
<Name>Search</Name><Position>1</Position><URL>SoftKey:Submit</URL></SoftKeyItem>
<SoftKeyItem><Name><<</Name><Position>2</Position><URL>SoftKey:<<</URL>
</SoftKeyItem><SoftKeyItem><Name>Cancel</Name><Position>3</Position>
<URL>SoftKey:Cancel</URL></SoftKeyItem>
<URL>http://10.106.111.100:8080/ccmcip/xmldirectorylist.jsp</URL><InputItem>
<DisplayName>First Name</DisplayName><QueryStringParam>f</QueryStringParam>
<InputFlags>A</InputFlags><DefaultValue></DefaultValue></InputItem><InputItem>
<DisplayName>Last Name</DisplayName><QueryStringParam>l</QueryStringParam>
<InputFlags>A</InputFlags><DefaultValue></DefaultValue></InputItem><InputItem>
<DisplayName>Number</D
從資料包捕獲中,您會看到HTTP GET請求和成功的RESPONSE。這是CUCM的PCAP:
疑難排解
進行故障排除之前,請收集前面列出的問題的詳細資訊:
要收集的日誌(如果需要)
完成以下步驟以隔離問題:
步驟 1.
使用以下詳細資訊建立測試服務:
Service Name : <Any Name>
Service URL : http://<CUCM_IP_Address>:8080/ccmcip/xmldirectoryinput.jsp
Secure-Service URL : http://<CUCM_IP_Address>:8080/ccmcip/xmldirectoryinput.jsp
Service Category : XML Service
Service Type : Directories
Enable : CHECK
Enterprise Subscription : DO NOT CHECK
現在,請將此服務訂購到受影響的電話之一:
- 前往裝置組態頁面。
- 在「Related Links(相關連結)」下選擇Subscribe/Unsubscribe Services。
- 訂閱您建立的測試服務。
- 保存、應用配置並重置電話。
- 無論電話的FW版本如何(確定是使用HTTP還是HTTPS URL),您所做的都是強制使用HTTP URL。
- 通過電話訪問公司目錄服務。
- 如果它不起作用,則收集前面提到的日誌,將其與「工作場景」部分中提到的工作場景進行比較,並確定偏差的位置。
- 如果有效,則您至少已確認,從CUCM IP電話服務的角度來看,不存在問題。
- 在這個階段,使用HTTPS URL的電話最有可能出現問題。
- 現在,選擇一個無法工作的電話,然後繼續下一步。
處理此更改時,您需要決定保留企業目錄請求/響應的配置(通過HTTP而不是HTTPS)是否正常。HTTPS通訊不起作用,因為下面討論的原因之一。
步驟 2.
收集前面提到的日誌,將其與「工作場景」部分中提到的工作場景進行比較,並確定偏差的位置。
它可能是以下問題之一:
- 電話無法聯絡TVS伺服器。
- 在PCAPS中,檢驗埠2445上的通訊。
- 確保路徑中的所有網路裝置都不會阻塞此埠。
- 電話聯絡TVS伺服器,但TLS握手失敗。
電話控制檯日誌中可列印以下行:
5007: NOT 10:25:10.060663 SECD: clpSetupSsl: Trying to connect to IPV4,
IP: 192.168.136.6, Port : 2445
5008: NOT 10:25:10.062376 SECD: clpSetupSsl: TCP connect() waiting,
<192.168.136.6> c:14 s:15 port: 2445
5009: NOT 10:25:10.063483 SECD: clpSetupSsl: TCP connected,
<192.168.136.6> c:14 s:15
5010: NOT 10:25:10.064376 SECD: clpSetupSsl: start SSL/TLS handshake,
<192.168.136.6> c:14 s:15
5011: ERR 10:25:10.068387 SECD: EROR:clpState: SSL3 alert
read:fatal:handshake failure:<192.168.136.6>
5012: ERR 10:25:10.069449 SECD: EROR:clpState: SSL_connect:failed in SSLv3
read server hello A:<192.168.136.6>
5013: ERR 10:25:10.075656 SECD: EROR:clpSetupSsl: ** SSL handshake failed,
<192.168.136.6> c:14 s:15
5014: ERR 10:25:10.076664 SECD: EROR:clpSetupSsl: SSL/TLS handshake failed,
<192.168.136.6> c:14 s:15
5015: ERR 10:25:10.077808 SECD: EROR:clpSetupSsl: SSL/TLS setup failed,
<192.168.136.6> c:14 s:15
5016: ERR 10:25:10.078771 SECD: EROR:clpSndStatus: SSL CLNT ERR,
srvr<192.168.136.6>
如需詳細資訊,請參閱Cisco錯誤ID CSCua65618。
- 電話聯絡TVS伺服器,並且TLS握手成功,但是TVS無法驗證電話請求進行身份驗證的證書的簽名者。
以下列出了TVS日誌的片段:
電話聯絡電視。
05:54:47.779 | debug 7:UNKNOWN:Got a new ph conn 10.106.111.121 on 10, Total Acc = 6..
.
.
05:54:47.835 | debug MsgType : TVS_MSG_CERT_VERIFICATION_REQ
TVS獲取頒發者名稱。
05:54:47.836 |-->CDefaultCertificateReader::GetIssuerName
05:54:47.836 | CDefaultCertificateReader::GetIssuerName got issuer name
05:54:47.836 |<--CDefaultCertificateReader::GetIssuerName
05:54:47.836 |-->debug
05:54:47.836 | debug tvsGetIssuerNameFromX509 - issuerName :
CN=cucmpub9;OU=TAC;O=Cisco;L=Bangalore;ST=KN;C=IN and Length: 49
它查詢證書,但找不到該證書。
05:54:47.836 | debug CertificateCTLCache::getCertificateInformation
- Looking up the certificate cache using Unique MAP ID :
62E09123B09A61D20E77BE5BF5A82CD4CN=cucmpub9;OU=TAC;O=Cisco;L=Bangalore;ST=KN;C=IN
05:54:47.836 |<--debug
05:54:47.836 |-->debug
05:54:47.836 | debug ERROR:CertificateCTLCache::getCertificateInformation
- Cannot find the certificate in the cache
05:54:47.836 |<--debug
05:54:47.836 |-->debug
05:54:47.836 | debug getCertificateInformation(cert) : certificate not found
- HTTPS流量在網路中的某個位置被阻止/丟棄。
從電話和CUCM伺服器獲取同步PCAP以驗證通訊。
出現「找不到主機」問題的其他場景
- CUCM伺服器由主機名以及名稱解析中的問題定義。
- 在電話上下載xmldefault.cnf.xml檔案時,TVS伺服器清單為空。(在8.6.2版中,由於思科錯誤ID CSCti64589,預設組態檔中沒有顯示TVS專案。)
- 電話無法使用配置檔案中的TVS條目,因為它下載了xmldefault.cnf.xml檔案。如需分析預設組態檔中的TVS資訊,請參閱Cisco錯誤ID CSCuq33297 — 電話。
- 在CUCM升級後,企業目錄無法工作,因為電話韌體會升級到更高版本,最終會改變預設情況下使用HTTPS的行為。