Configure and Troubleshoot VPN Phones

The documentation set for this product strives to use bias-free language. For the purposes of this documentation set, bias-free is defined as language that does not imply discrimination based on age, disability, gender, racial identity, ethnic identity, sexual orientation, socioeconomic status, and intersectionality. Exceptions may be present in the documentation due to language that is hardcoded in the user interfaces of the product software, language used based on RFP documentation, or language that is used by a referenced third-party product. Learn more about how Cisco is using Inclusive Language.

Contents

Introduction

This document describes how to configure and troubleshoot the VPN Phone feature of Cisco IP Phones and Cisco Unified Communications Manager.

Prerequisites

Requirements

Cisco recommends that you have knowledge of these topics:

Components Used

The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, ensure that you understand the potential impact of any command.

Background Information

The test environment in this article includes an 8861, ASAv, and CUCM 11.5.1, but there are many different variations of these products that you could use. You must check the Phone Feature List on CUCM to ensure that your phone model supports the VPN feature. In order to use the phone feature list, access your CUCM publisher in your browser and navigate to Cisco Unified Reporting > Unified CM Phone Feature List. Generate a new report and then select your phone model in the dropdown. Next, you need to search the List Features section for Virtual Private Network Client as shown in the image:

Phone Feature List

Configure

VPN phones require that you have the proper configuration on your ASA and CUCM. You could start with either product first, but this document covers the ASA configuration first.

ASA Configuration

Step 1. Verify that the ASA is licensed to support AnyConnect for VPN phones. The show version command on the ASA can be used to verify that Anyconnect for Cisco VPN Phone is enabled as shown in this snippet:

[output omitted]
Licensed features for this platform:
Maximum VLANs : 50
Inside Hosts : Unlimited
Failover : Active/Standby
Encryption-DES : Enabled
Encryption-3DES-AES : Enabled
Security Contexts : 0
Carrier : Enabled
AnyConnect Premium Peers : 250
AnyConnect Essentials : Disabled
Other VPN Peers : 250
Total VPN Peers : 250
AnyConnect for Mobile : Enabled
AnyConnect for Cisco VPN Phone : Enabled
Advanced Endpoint Assessment : Enabled
Shared License : Disabled
Total TLS Proxy Sessions : 500
Botnet Traffic Filter : Enabled
Cluster : Disabled

If this feature is not enabled, you need to work with the License team to get the appropriate license. Now that you have confirmed that your ASA supports VPN phones, you can begin the configuration.

Note: All of the underlined items in the configuration section are configurable names that can be changed. Most of these names are referenced elsewhere in the config, so it is important to remember the names you use in these sections (group policy, tunnel group, etc) becase you need them later.

Step 2. Create an IP address pool for VPN clients. This is similar to a DHCP pool in that when an IP phone connects to the ASA it receives an IP address from this pool. The pool can be created with this command on the ASA:

ip local pool vpn-phone-pool 10.10.1.1-10.10.1.254 mask 255.255.255.0

Also, if you prefer a different network or subnet mask, that can be changed as well. Once the pool is created, you need to configure a group policy (a set of parameters for the connection between the ASA and IP phones):

group-policy vpn-phone-policy internal

group-policy vpn-phone-policy attributes

split-tunnel-policy tunnelall

vpn-tunnel-protocol ssl-client

Step 3. You need to enable AnyConnect if it is not already enabled. In order to do this, you need to know the name of the outside interface. Typically, this interface is named outside (as shown in the snippet), but it is configurable, so be sure to confirm you have the right interface. Run show ip to see the list of interfaces:

sckiewer-ASAv# show ip
System IP Addresses:
Interface Name IP address Subnet mask Method
GigabitEthernet0/0 outside 172.16.1.250 255.255.255.0 CONFIG
GigabitEthernet0/1 inside 172.16.100.250 255.255.255.0 CONFIG
Current IP Addresses:
Interface Name IP address Subnet mask Method
GigabitEthernet0/0 outside 172.16.1.250 255.255.255.0 CONFIG
GigabitEthernet0/1 inside 172.16.100.250 255.255.255.0 CONFIG

In this environment, the outside interface is named outside, so these commands enable AnyConnect on that interface.

webvpn
enable outside
anyconnect enable

Step 4. Configure a new tunnel group in order to apply the group policy created earlier to any clients that connect on a specific URL. Notice the reference to the names of the IP address pool and group policy that you created earlier in the 3rd and 4th lines of the snippet. If you modified the names of the IP address pool or group policy, then you need to use replace the incorrect values with your modified names:

tunnel-group vpn-phone-group type remote-access
tunnel-group vpn-phone-group general-attributes
address-pool vpn-phone-pool
default-group-policy vpn-phone-policy
tunnel-group vpn-phone-group webvpn-attributes
authentication certificate
group-url https://asav.sckiewer.lab/phone enable

You can use an IP address rather than a name for the group-url. This is usually done if the phones do not have access to a DNS server that can resolve the Fully Qualified Domain Name (FQDN) of the ASA. Also, you can see that this example uses certificate-based authentication. You have the option to use username/password authentication as well, but there are more requirements on the ASA that are outside of the scope of this document.

In this example, the DNS server has the A record, asav.sckiewer.lab - 172.16.1.250 and you can see from the show ip output that 172.16.1.250 is configured on the interface named outside. So the configuration would be:

crypto ca trustpoint asa-identity-cert

enrollment self

subject-name CN=asav.sckiewer.lab

crypto ca enroll asa-identity-cert

ssl trust-point asa-identity-cert outside

A few things to note:

  1. A new trustpoint had been created called asa-identity-cert and a subject name has been applied to it. This causes the certificate generated from this trustpoint to use the specified subject name
  2. Next, the 'crypto ca enroll asa-identity-cert' command allows the ASA to generate a self-signed certificate and save it to that trustpoint
  3. Finally, the ASA presents the certificate in the trustpoint to any device that connects to the outside interface

Step 5. Create the necessary trustpoints to allow the ASA to trust the IP phone's certificate. First, you need to determine if your IP phones use the Manufacturer Installed Certificate (MIC) or Locally Significant Certificate (LSC). By default, all phones use their MIC for secure connections unless an LSC is installed on them. In CUCM 11.5.1 and up, you can run a search located at Unified CM Administration > Device > Phone to see if LSCs are installed while older versions of CUCM would require you physically check the security settings on each phone. In CUCM 11.5.1, notice that you need to add a filter (or change the default filter) to LSC Issued By. Devices with NA in the LSC Issued By column utilize the MIC since they do not have an LSC installed.

Device

If your phone looks like the one highlighted in the image, you need to upload the CUCM Publisher's CAPF certificate to the ASA in order for the ASA to validate the phone's certificate for the secure connection. If you want to use devices with no LSC installed, then you need to upload the Cisco Manufacturing Certificates to the ASA. These certificates can be found on the CUCM Publisher at Cisco Unified OS Administration > Security > Certificate Management:

Note: You can see that some of these certificates in multiple trust-stores (CallManager-trust and CAPF-trust). It does not matter which trust-store you download the certificates from as long as you ensure that you select the ones with these exact names.

CAPF

Regarding the MIC, older phones models such as the 79xx and 99xx series utilize the SHA-1 certificate chain while newer phone models such as the 88xx series utilize the SHA-256 certificate chain. The certificate chain that your phone(s) use needs to be uploaded to the ASA.

Once you have the required certificates, you can create the trustpoint(s) with:

crypto ca trustpoint cert1

enrollment terminal

crypto ca authenticate cert1

The first command creates a trustpoint named cert1, and the crypto ca authenticate command allows you to paste the base64 encoded certificate into the CLI. You can run these commands as many times as you need to in order to get the appropriate trustpoints on the ASA, but be sure to use a new trustpoint name for each certificate.

Step 6. Acquire a copy of the ASA identity certificate by issuing this command:

crypto ca export asa-identity-cert identity-certificate

This exports the identity certificate for the trustpoint named asa-identity-cert. Be sure to adjust the name so it matches the trustpoint you created in step 4.

Here is the full lab configuration for the ASA:

ip local pool vpn-phone-pool 10.10.1.1-10.10.1.254 mask 255.255.255.0 group-policy vpn-phone-policy internal group-policy vpn-phone-policy attributes split-tunnel-policy tunnelall vpn-tunnel-protocol ssl-client webvpn enable outside anyconnect enable tunnel-group vpn-phone-group type remote-access tunnel-group vpn-phone-group general-attributes address-pool vpn-phone-pool default-group-policy vpn-phone-policy tunnel-group vpn-phone-group webvpn-attributes authentication certificate group-url https://asav.sckiewer.lab/phone enable ssl trust-point asa-identity-cert outside

At this point, the ASA config is complete, and you can proceed with the configuration of CUCM. You need to have a copy of the ASA certificate that you just collected and the URL that was configured in the tunnel-group section.

CUCM Configuration

Step 1. On CUCM, navigate to Cisco Unified OS Administration > Security > Certificate Management and upload the ASA certificate as phone-vpn-trust.

Phone-VPN-trust

Step 2. Once this is done, navigate to Cisco Unified CM Administration > Advanced Features > VPN > VPN Profile and create a new profile. There is no right or wrong in this section, it is just important to understand the purpose of each setting.

  1. Enable Auto Network Detect - when this is enabled, the phone pings its TFTP server when it powers on. If it receives a response to this ping, it does not enable VPN. If the phone does not receive a response to this ping, it enables VPN. When this setting is enabled, VPN cannot be enabled manually.
  2. Host ID Check - when this is enabled, the phone inspects the VPN URL from its configuration file (https://asav.sckiewer.lab/phone is used in this document), and ensures that the hostname or FQDN matches the Common Name (CN) or a SAN entry in the certificate presented by the ASA.
  3. Authentication Method - controls which type of authentication method is used for the connection to the ASA. In the configuration example from this document, certificate-based authentication is used.
  4. Password Persistence - if this is enabled, the client's password is stored in the phone until a failed log in attempt occurs, the client manually clears the password, or the phone resets.

VPN Profile

Step 3. Next, navigate to Cisco Unified CM Administration > Advanced Features > VPN > VPN Gateway. You need to ensure that your VPN Gateway URL matches the ASA configuration, and that you move the certificate from the top box to the bottom box as shown in the image:

Phone VPN Gateway

Step 4. Once this is saved, you need to navigate to Cisco Unified CM Administration > Advanced Features > VPN > VPN Group and move the gateway you created to the 'Selected VPN Gateways in this VPN Group' box:

Phone VPN Gateway 2

Step 5. Now that the the VPN settings have been configured, you need to navigate to Cisco Unified CM Administration > Device > Device Settings > Common Phone Profile. Here, you must copy the profile that your desired VPN phone uses, rename it, and select your VPN Group and VPN Profile then save the new profile:

Common Phone Profile

Step 6. Finally, you need to apply this new profile to your phone, and then reset the phone while it is on the internal network. This allows the phone to receive all of this new configuration such as the ASA certificate hash, and the VPN URL.

Note: Before testing the phone, you need to ensure that the phones have an 'Alternate TFTP' server configured. Since the ASA does not provide an option 150 to the phones, the TFTP IP needs to be configured on the phones manually.

Step 7. Test the VPN phone and verify that it can successfully connect to the ASA and register. You can verify that the tunnel is up on the ASA with, show vpn-sessiondb anyconnect:

sessiondb

Troubleshoot

Data to Collect

In order to troubleshoot a VPN Phone issue, this data is recommended: