05-05-2010 08:06 AM - edited 08-28-2017 10:14 PM
Starting in CUCM 8.0.1 and IP Phone Firmware 9.X, IP Phones are now able to directly connect to an ASA using the AnyConnect VPN. This document will help address some common issues encountered during intial configuration. This guide will act as a supplement to the Official IP Phone VPN Documentation.
Before we get into versions and model numbers let's look at how the feature works.
Before the phone is ready for VPN, it must first be provisioned using the internal network. This requires direct access to the CUCM TFTP server.
The first step after the ASA is fully configured is to take the ASA HTTPS Certificate and upload it to the CUCM server. This allows the CUCM server to build an IP phone config file that tells the phone how to get to the ASA. The CUCM requires some additional configuration to associate the uploaded certificate with a VPN Profile that can be assigned to the phone.
Here is an example of the IP Phone VPN section of a phone's config file after performing the required configuration:
jasburns@jasburns-gentoo /home/jasburns $ tftp 14.48.44.80 tftp> get SEP0011215A1AE3.cnf.xml.sgn Received XXXX bytes in 0.0 seconds jasburns@jasburns-gentoo /home/jasburns $ cat SEP0011215A1AE3.cnf.xml.sgn .......... <vpnGroup> [Some Lines Omitted] <addresses> <url1>https://X.X.X.X/PhoneVPN</url1>
</addresses>
<credentials>
<hashAlg>0</hashAlg>
<certHash1>1eD9l3VEI9DGWQGKlNBGE1bRhUg=</certHash1>
</credentials>
</vpnGroup>
Note that the URL is printed exactly as entered on the VPN Gateway Configuration page in CUCM. Make sure the IP Phone can resolve this address.
Even more interesting is the Cert Hash. The IP phone configuration does not contain the entire certificate, merely a SHA1 Base64 encoded hash of the certificate.
You can compare the certificate hash in the IP phone configuration file to the cert hash of the actual file on the ASA or CUCM if you copy it to a computer running OpenSSL (either Windows, Linux, or Mac)
$ cat r2800.cisco.com.pem
-----BEGIN CERTIFICATE-----
<Base64 value of the cert omitted>
-----END CERTIFICATE-----
openssl x509 -in r2800.cisco.com.pem -noout -fingerprint
SHA1 Fingerprint=D5:E0:FD:97:75:44:23:D0:C6:59:01:8A:94:D0:46:13:56:D1:85:48
This is the SHA1 Fingerprint in Hexadecimal form. In the configuration file this value is instead printed as the Base64 value. I used the following website to convert from Hex to Base64:
http://tomeko.net/online_tools/hex_to_base64.php
This method can be used to verify the certificate loaded onto and presented by the ASA matches the certificate hash loaded into the phone.
This part is extremely important. The phone must download the configuration (including the certificate hash in Base64) while it is inside the network and has direct access to the CUCM TFTP server.
The phone has to be provisioned inside the network before it can be moved outside the network and use the VPN feature.
After internal provisioning has been completed, the phone can be moved to the external network for VPN access. Here the Corporate Phone has been moved to a Home location.
Depending on the phone's configuration it will either automatically attempt to connect to the VPN gateway, or will connect once manually initiated. If auto network detect is enabled, the phone will try to ping the TFTP server. If there is no response to this ping request the phone will automatically bring up the VPN process on the phone.
The phone connects on TCP port 443 over HTTPS to the ASA. The ASA responds back with the configured certificate, hopefully the same certificate uploaded to CUCM. In additional TCP 443 (Transport Layer Security, or TLS), the phone will also connect on UDP 443 for DTLS (Datagram Transport Layer Security).
The phone console logs show us the hash of the certificate that the ASA presents in Hex form:
3943: INF 18:10:22.354209 VPNC: vpnc_save_to_file: wrote: </tmp/leaf.crt>, 479 bytes
3944: NOT 18:10:22.355351 VPNC: cert_vfy_cb: peer cert saved: /tmp/leaf.crt
3945: NOT 18:10:22.361892 SECD: Leaf cert hash = D5E0FD97754423D0C659018A94D0461356D18548
3946: NOT 18:10:22.362574 SECD: Hash was found in the trust list
3947: NOT 18:10:22.400294 VPNC: VPN cert chain trusted
These messages show us that the phone was able to validate the certificate that the ASA presented. The cert presented matched the hash in the configuration file.
At this point the phone will establish an SSL session with the ASA and continue setting up the VPN tunnel.
All communication will now flow between the phone and the ASA in an encrypted tunnel. Once the traffic reaches the ASA it will be decrypted and forwarded along to any location in the network that the phone would like to connect to.
The beauty of this solution is that the phone obtains an address on the Internal network that is typically not filtered. The phone can connect using SCCP, SIP, HTTP, HTTPS to any server inside the Corporate Network. This allows advanced phone services and features to function that might not work through ASA Phone Proxy.
CUCM >= 8.0.1.100000-4
IP Phone >= 9.0(2)SR1S - SCCP
ASA >= 8.0.4
Anyconnect VPN Pkg >= 2.4.1012
Note: A "Premium" license and an "AnyConnect for Cisco VPN Phone" license is required. The part number for the "AnyConnect for Cisco VPN Phone" is L-ASA-AC-PH-55XX= where XX = 05,10,20,40,50,80.
7942 / 7962 / 7945 / 7965 / 7975 / 8961 / 9951 / 9971. For a complete list of supported phones in your CUCM version go to:
https://<CUCM Server IP Address>:8443/cucreports/systemReports.do
Unified CM Phone Feature List
Generate a new report
Feature: Virtual Private Network
http://www.cisco.com/en/US/docs/voice_ip_comm/cucm/security/8_5_1/secugd/secuvpn.html
The following document provides a complete set of configuration tasks required to configure CUCM for this feature:
http://www.cisco.com/en/US/docs/voice_ip_comm/cucm/security/8_5_1/secugd/secuvpn.html
Note: Please make sure the URL for the VPN Gateway contains the full and correct address to reach the IP Phone VPN tunnel-group on the ASA.
Configure Anyconnect VPN access on ASA to provide network access.
See http://www.cisco.com/en/US/products/ps6120/products_configuration_example09186a00808efbd2.shtml for example configuration.
The lateset CUCM Security Guide also provides sample ASA configuration.
Hi,
Thanks alot for this detailed mail
Only I need to confirm something,,
With CUCM 8, Do I need only premium license to have ip phone vpn feature on ASA, or also I need this license L-ASA-AC-PH-55XX= beside the premium
That I hear that with CUCM 8 we need only the premium license [Any connect include it] , and this license L-ASA-AC-PH-55XX= may be needed only with CUCME8 ?
If, I'll need this license L-ASA-AC-PH-55XX=
Will I order it per users or per session or per device ??
Thanks a lot and waiting for your reply
Best Regards
You need both the Premium license and the Phone license applied to the ASA. The Premium license is a number of concurrent sessions license whereas the Phone license is a enable/disable feature license.
You can order the licenses separately but whether or not they are included with the purchase of CUCM 8 I do not know. Perhaps you can contact your local sales rep to see if they can perform a bundle.
Dear Jay,
Thank you very much for your concern and fast reply
Only one other question:
Is this required license L-ASA-AC-PH-55XX= is not included in this license: ASA-ANYCONN-CSD-K9
ASA-ANYCONN-CSD-K9 : is AnyConnect client license and I read that there is a new license for ASA called AnyConnect and it include most of the needed features ?
Kindly correct my sentense above that I'm a voice engineer and have low level expertise in Security and tell me what is the AnyConnect license exactly
Thanks for your help and patience
Best Regards
The ASA-ANYCONN-CSD-K9 only allows anyconnect and csd. You will want to order the both the premium license and the L-ASA-AC-PH-55XX=
Hi Jay
Thanks a lot for your follow up
Since the application is for a phone versus a workstation, is there any settings that should be tweaked? e.g. Keepalive timers, dead peer detection timers, avoiding AES-256 encryption, etc
Sample:
ssl encryption aes128-sha1
group-policy <phone/UC> attributes
banner none
dns-server value <DNS1> <DNS2>
vpn-idle-timeout none
vpn-session-timeout none
vpn-tunnel-protocol svc
default-domain value <company>.com
address-pools value <DHCP/RAS POOL>
webvpn
svc dtls enable
svc keep-installer installed
svc keepalive 120
svc rekey time 4
svc rekey method new-tunnel
svc dpd-interval client none
svc dpd-interval gateway 300
svc compression deflate
Thanks
Hi,
I have a couple of questions:
If I'm using user and password authentication do I need to get the ASA cert to the phones?
After installing the ASA certificate in CUCM and applying it to the phone will I see it in the phone CTL?
If I am using certificates for authentication which one gets picked - MIC or LSC?
BR,
Stoyan
Even with username nad password authentication you do need the ASA certificate uploaded to call manager as a phone-vpn-trust, so that the phone can "get" the certificate from call manager and has it to verify the SSL handshake when connecting to the ASA. There is no way currently to see the certificate on the phone (http://tools.cisco.com/Support/BugToolKit/search/getBugDetails.do?method=fetchBugDetails&bugId=CSCtk00661) like you can with the CTL. Either the MIC or LSC when using certificates for authentication too.
Just a follow-up. ASA code 8.2(4) was providing the unexpected result of random midcall failures using the configuration above. ASA code 8.3(2)4 does seem to have corrected the issue.
What happens when we need to replace the ASA's certificate? e..g. The certificate on the ASA is revoked or ages out and simply needs to be replaced. If I follow the procedure and "replace" the old certificate, won't my remote phones who were brought up using the legacy certifictate no longer be able to VPN in?
If you have to replace your ASA certificate if possible put the ASA certificate on call manager before applying it to the ASA, so that CUCM has a new phone-vpn-trust cert, apply that new certificate to the VPN gateway profile and then reset the phone, that way the phone gets the new certificate while still being connected to the VPN. Alternatively, if the ASA cert expires the phone will not be able to connect to the VPN, what must be done in that case is an external TFTP has to be setup that has the phone's new config file with the new certificate that can be downloaded from call manager and then the phone has to be pointed to the external TFTP. Otherwise you're correct the phone would have to be brought back inside the internal network again.
Thank you for this usefull topic!
Got one question
What if I dont have this feature mentioned in my sh run
AnyConnect for Cisco VPN Phone : Disabled
That feature won't be mentioned if you are running an older version of the ASA code. You will need to upgrade to the minimum version as referenced about.
Thank you for the Wonderfull Post.
I have congigured the CUCM/ASA as per the guidence given here and provioned the 7945 phone in the Inside network.
Now am trying to connect the phone from Public network its prompts me for VPN username/password as soon as i give the creadentials it gives me "Authentication failed" and there is no logs in the orresponding time in ASA(Its not hitting the ASA?).I have tested by connecting PC to SSL VPN and accessing CUCM it works fine.
Any suggestiones here is very much appriciated
Thanks in Advance
If it's not hitting the ASA I would look at the phone console logs which can be accessed from putting in the phone's IP address into a browser. Just to check something basic, is the URL configured as a hostname or IP address? If it's a hostname does the phone have a DNS server that can resolve it?
Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community: