The operations detailed in these blogs may not be the final word on all of the ins and outs of configuring the items. However, we discovered that there are very few, or no, articles dealing with these subjects written by someone who has actually performed the tasks. We, therefore, felt it would be a service to offer information about the steps that worked for us in our specific set of circumstances (particularly since we, apparently, fell into most of the traps).
Comments are certainly welcome, and we will be happy to update these blogs if need be.
Unlike the other configurations, secure conferencing requires the voice gateway to generate a certificate and that certificate must be installed on all servers. By the same token, certificates must be generated by CUCM servers that are imported into the voice gateways.
By the way, if you have one of the new G2 ISRs you’ll discover that you can’t do all of the following configurations unless the router has a security license. Having the correct IOS is no longer enough. A license must be loaded into flash, installed, and active. Contact your friendly neighborhood Cisco guy or gal for guidance.
The first steps in the configuration of secure conferencing are the same as the steps required to configure secure calls as detailed in the article “Configuring Calling Encryption Between Cisco IP Phones.”
The next step is to download the CallManager certificates from the Publisher and from all Subscribers. Go into the OS Administration GUI on each of the servers, and select Security > Certificate Management. Select the certificate named CallManager.pem and take a look at the name in the “CN=” field. Write down the name exactly as it’s listed. If it’s called “server1” write that down. If it’s called “server1.verybigco.com”, write that down.
Click the “Download” button and download the certificate. Remember to get the CallManager certificates from the Publisher and all Subscribers.
Before going any further, it’s a good idea to consider the name of the voice gateway. When dealing with certificates in general, making sure that all names match is critical. A technician at TAC even stated that the case of the name makes a difference. So if the voice gateway’s hostname is “verybiggw”, the RSA keys should be named “verybiggw”, the trustpoint needs to be “verybiggw”, and everything else that has anything to do with cryptography from the router’s point of view has to be called “verybiggw” too.
The first actual piece of configuration deals with generating an RSA key on the router. Type:
verybiggw(config)# crypto key generate rsa general-keys label verybiggw modulus 1024
Next, create a trustpoint for the certificate, configure enrollment for it, and associate the RSA key to the trustpoint. Type:
verybiggw(config)# crypto pki trustpoint verybiggw
verybiggw(ca-trustpoint)# enrollment selfsigned
verybiggw(ca-trustpoint)# rsakeypair verybiggw
The next configurations are optional, but recommended. They set the certificate to have no domain name, and ensure there is no check to see if the certificate has been revoked. It does, however, put the name of the router in the subject of the certificate. Type:
verybiggw(ca-trustpoint)# fqdn none
verybiggw(ca-trustpoint)# revocation-check none
verybiggw(ca-trustpoint)# subject-name CN=verybiggw
The next configuration enrolls the certificate. Type:
verybiggw(config)# crypto pki enroll verybiggw
When this command is issued, it asks if a router serial number is desired in the subject name and if an IP address is desired in the subject name. It’s suggested that the answer to each of these questions should be “no”. The next question however, will be whether a certificate should be generated, and the answer to that question should be “yes”.
Even though it has been mentioned already, it’s worth pointing out again that the name of the router “verybiggw” has been used throughout this exercise. This is a rule to which one must pay attention.
The next step is something that is very unusual. Open Wordpad (this actually is easier if Wordpad is the text editor that’s used) and set it off to the side. On the router, issue the command that will print the self-signed certificate to the screen:
verybiggw(config)# crypto pki export verybiggw pem terminal
The command will display both a self-signed CA certificate, and a General Purpose certificate. As it turns out, these are both the same. Copy either one of the certificates all of the way from
Through all of the numbers and letters and then through
Make sure you get the “—–BEGIN CERTIFICATE——” and the “—–END CERTIFICATE——” included in the copied information, otherwise the certificate won’t be read correctly. Remember, also, that only one of the displayed certificates must be copied. Paste the copied information to the text editor. Save the file using the name of the router and a “.pem” extension (e.g. verybiggw.pem). Make sure to use the exact name of the router (case sensitive).
Still on the voice gateway, create a trustpoint for each certificate from each CUCM server that was downloaded earlier. The following example will only show one trustpoint, but remember that this is something that will probably have to be done multiple times. Pay attention to names and cases. This is when the name of the servers written down in step 2 are required. Assuming that the name of the Publisher is “server1.verybigco.com”, the configurations will be:
verybiggw(config)# crypto pki trustpoint server1
verybiggw(ca-trustpoint)# enrollment terminal pem
verybiggw(ca-trustpoint)# subject-name CN=server1.verybigco.com
verybiggw(ca-trustpoint)# revocation-check none
Notice that the trustpoint name is the only place where the entire domain name of the server is not required. The first part of the name (the server name itself), however, must still be exact. Also, the second command may be just “enrollment terminal” depending on your IOS. Do a “?” and see what options your have. Regardless, you want “enrollment terminal pem” to show up in a running-config.
If another trustpoint needs to be created, use the configuration “crypto pki trustpoint server2” (or whatever the name of the other server is) and create its trustpoint. And so on, and so on.
Open another instance of Wordpad and use it to look at the certificate(s) copied from the server(s) in step 3. The certificate(s) will look very much like the ones(s) generated on-screen by the voice gateway. In other words, there will be a bunch of numbers and letters preceded by —–BEGIN CERTIFICATE—– and succeeded by —–END CERTIFICATE—–. Copy the entire chunk of information. Then go back into the gateway’s CLI and issue the following command (again, assuming the name of the Publisher is “server1”):
verybiggw(config)# crypto ca authenticate server1
When the command is issued, a prompt will appear asking that the certificate be entered. Paste everything that was copied from the server certificate into the CLI, hit Enter, type “quit” (without the quotes) and hit Enter again. Information about the certificate will be displayed and a question will be asked about whether or not the certificate should be accepted. Say “yes”. The gateway should say that the certificate has been successfully imported. Issue the above command with the server name for each server, and – when prompted – copy the certificate from that server into the router.
Now it’s time to configure the conference bridge. This works basically the same as normal, but there are a couple of pitfalls. Start with the voice-card. Type:
verybiggw(config)# voice-card 0
verybiggw(config-voicecard)# dsp services dspfarm
Next is the profile. Notice the extra configuration at the end as well as the fact that one needs to bind it to the local trustpoint:
verybiggw(config)# dspfarm profile 1 conference security
verybiggw(config-dspfarm-profile)# trustpoint verybiggw
verybiggw(config-dspfarm-profile)# maximum sessions 4
verybiggw(config-dspfarm-profile)# associate application SCCP
verybiggw(config-dspfarm-profile)# no shut
Configure SCCP, but add the CUCM trustpoint (notice in this example “version 7.0” is the version of CUCM we used, the version that’s specific to the environment is what should be entered):
verybiggw(config)# sccp local gigabitEthernet 0/0
verybiggw(config)# sccp ccm 10.1.1.1 identifier 1 version 7.0 trustpoint server1
Configure the SCCP Group and register the name of the conference bridge. This is something that trips up a lot of people. Normally, the name that is used for registration can be just about anything. However, certificates are being used, and certificates care a lot about nomenclature. Therefore, the name that’s used here must match the trustpoint, the router name, and everything else.
verybiggw(config)# sccp ccm group 1
verybiggw(config)# bind interface gigabitEthernet0/0
verybiggw(config)# associate ccm 1 priority 1
verybiggw(config)# associate profile 1 register verybiggw
At this point, the voice gateway configuration is complete, and it’s time to move on to CUCM. Start by getting into the OS Administration GUI and going to Security > Manage Certificates.
Upload the certificate(s) created from the router (in the example it was verybiggw.pem). These certificates need to be uploaded as “CallManager-trust” certificates. Leave the “Root Certificate” line blank.
Next, configure the conference bridge within CUCM. Get into the CM Administration GUI and to go Media Resources > Conference Bridge > Add New.
From the drop-down select “IOS Enhanced Conference Bridge”.
Enter the conference bridge name. This is the name put into the router in the line “associate profile 1” (in the example the line was “associate profile 1 register verybiggw”, so the name we entered was “verybiggw”). Most of the rest is the usual configuration stuff; however, in the Device Security Mode area, select Encrypted Conference Bridge.
Click Save, and hope to heck that the bridge registers. If it doesn’t, it’s almost always a problem with the names used everywhere. Double-check spelling and case.
Use the secure conference bridge(s) in the same way one would use a regular conference bridge. Put the bridge(s) into a Media Resource Group and put the group into a Media Resource List. Then assign the MRGL in the way that one would normally do so.
Test secure conferencing by setting up a conference using secure phones. Once in a conference, the padlock should still be displayed next to the caller ID. One non-secure participant will make the entire conference non-secure. Once the conference is set up, it’s also possible to go to the CLI of the router and issue the command “show dspfarm dsp active”. The TYPE column should show something like: “s-conf 1” where the “s” stands for a secure conference.
A Cisco Certified Networking Professional (CCNP) for voice, as well as routing and switching. Paul has specialized in Cisco networking solutions since 1996 and has been focused on Cisco voice products since 2007. He is also a Cisco Certified Systems Instructor (CCSI #31022) and continues to develop knowledge transfer sessions for voice as well as routing and switching.
Nick has over 20 years of experience in Security Operations and Security Sales. He is an avid student of cybersecurity and regularly engages with the Infosec community at events like BSides, RVASec, Derbycon and more. The son of an FBI forensics director, Nick holds a B.S. in Criminal Justice and is one of Cisco’s Fire Jumper Elite members. When he’s not working, he writes cyberpunk and punches aliens on his Playstation.
Virgilio “BONG” dela Cruz Jr.
CCDP, CCNA V, CCNP, Cisco IPS Express Security for AM/EE
Field Solutions Architect, Tech Data
Virgilio “Bong” has sixteen years of professional experience in IT industry from academe, technical and customer support, pre-sales, post sales, project management, training and enablement. He has worked in Cisco Technical Assistance Center (TAC) as a member of the WAN and LAN Switching team. Bong now works for Tech Data as the Field Solutions Architect with a focus on Cisco Security and holds a few Cisco certifications including Fire Jumper Elite.
CCIE #1066, CCDE #20070002, CCAr
Chief Technology Officer, Practice Lead Security Services, NetCraftsmen
John is our CTO and the practice lead for a talented team of consultants focused on designing and delivering scalable and secure infrastructure solutions to customers across multiple industry verticals and technologies. Previously he has held several positions including Executive Director/Chief Architect for Global Network Services at JPMorgan Chase. In that capacity, he led a team managing network architecture and services. Prior to his role at JPMorgan Chase, John was a Distinguished Engineer at Cisco working across a number of verticals including Higher Education, Finance, Retail, Government, and Health Care.
He is an expert in working with groups to identify business needs, and align technology strategies to enable business strategies, building in agility and scalability to allow for future changes. John is experienced in the architecture and design of highly available, secure, network infrastructure and data centers, and has worked on projects worldwide. He has worked in both the business and regulatory environments for the design and deployment of complex IT infrastructures.