Primeiramente, gostaria de desejar um feliz 2014!!
Faz bastante tempo que eu num faço um post no blog que não seja relatos de pessoas que passaram na prova. Confesso que é uma forma bastante prática de manter o blog atualizado! hahaha... só que num é só disso que pode viver o blog, né? Por outro lado, o blueprint atual está quase no fim, e não tenho o intuito de ficar me atualizando no blueprint novo para postar coisas relativas à próxima prova (a não ser que eu capitalize o blog e comece a ganhar dinheiro com isso! hahaha).
Portanto, hoje farei um post sobre um assunto que num tem nada a ver com a prova (pelo menos não a atual), mas que eu achei extremamente difícil achar referências boas na Internet quando precisei fazer. É sobre a configuração de um voice gateway SIP criptografado (TLS), usando certificados da estrutura do cliente. O que tem bastante na internet é sobre como fazer usando certificados self-signed do CUCM e Gateway, mas convenhamos que num deployment real, dificilmente isso vai acontecer. Geralmente o cliente tem toda uma estrutura de certificados da empresa para os seus serviços, e pede que a gente utilize essa estrutura.
Ok, serei sincero. Isso definitivamente não é a minha área de especialidade, então certamente tem coisa que pode estar errada. O que mostro abaixo é como eu fiz e deu certo.
Importando os certificados no Roteador
1. Crie um par de chaves (pública e privada) no Voice Gateway, dando um nome qualquer. Sugiro nomear com o próprio Hostname do roteador:
crypto key generate rsa general-keys label <HOSTNAME> mod 2048 exportable
2. Crie um Trustpoint no Voice Gateway, e nomeie ele com o Hostname:
crypto pki trustpoint <HOSTNAME>
enrollment terminal
fqdn HOSTNAME.domain.example.com ! - hostname e domínio
subject-name CN=HOSTNAME.domain.example.com
revocation-check none
rsakeypair <HOSTNAME> ! - referencia às chaves criadas no passo 1
3. Autentique o trustpoint, incluindo certificado Root
crypto pki authenticate <HOSTNAME>
Ao dar o comando, o roteador vai pedir para você colar o certificado root. Esse certificado você deve pedir ao cliente:
Enter the base 64 encoded CA certificate
<COLE A STRING CONTENDO O CERTIFICADO ROOT>
4. Gere o CSR (Certificate Sign Request) do roteador para ser assinado pelo cliente:
crypto pki enroll <HOSTNAME>
%Start certificate enrolment ..
Include serial? No
Include IP Address? No
Display CSR? Yes
O roteador vai gerar uma string, que você deve copiar toda ela num TXT e encaminhar para o cliente assinar no CA dele. Caso seja um Windows, o template deve conter as funções TLS Web Server Authentication, TLS Web Client Authentication e IPSec End System.
5. Quando o cliente enviar o certificado assinado pelo CA dele, importe de volta para o Roteador:
crypto pki import <HOSTNAME> certificate
Enter the base 64 encoded certificate
<COLE A STRING CONTENDO O CERTIFICADO ASSINADO>
Agora vamos fazer a parte dos certificados do CUCM.
Importando os certificados no CUCM
1. No CUCM, entre no OS Administrator. Vá em Security >> Certificate Management
2. Clique em Upload Certificate, e faça upload do Certificado Root para CallManager-trust e tomcat-trust.
3. Clique em Generate CSR e gere os CSRs do CallManager e tomcat.
4. Clique em Download CSR para baixar os arquivos
5. Envie para o cliente assinar no CA dele. Caso seja um Windows, o template deve conter as funções TLS Web Server Authentication, TLS Web Client Authentication e IPSec End System.
6. Quando o cliente mandar os certificados assinados, importe novamente como CallManager e tomcat (sem o trust).
7. Faça isso em todos os servidores do cluster, e depois reinicie tudo.
Configurando o SIP Trunk no CUCM
1. Crie um SIP Trunk Security Profile, marcando a opção Encrypted, com transport type TLS. No X.509 Subject Name, coloque o Hostname e Domain name do roteador, como no exemplo abaixo
2. Crie um SIP Trunk como o usual, mas marque a opção SRTP Allowed, aplique o Security Profile criado acima, e utilize a porta 5061 como Destination Port. Como Device Name do trunk, utilize o Hostname do roteador.
Configurando o SIP Trunk no Gateway
1. Crie a dial-peer voip normalmente, porém com os dois comandos destacados abaixo:
dial-peer voice X voip
destination-pattern <XXXX>
session protocol sipv2
session target ipv4:x.x.x.x:5061
session transport tcp tls
srtp fallback
(...)
2. Configure o SIP-TLS:
sip-ua
crypto signalling remote-addr <CUCM-Pub> 255.255.255.255 trustpoint <HOSTNAME> strict-cipher
crypto signalling remote-addr <CUCM-Sub> 255.255.255.255 trustpoint <HOSTNAME> strict-cipher
E pronto!
Troubleshooting
Esses debugs são muito úteis para fazer o troubleshooting do TLS
debug ssl openssl errors
debug ssl openssl msg
debug ssl openssl state
show sip-ua connection tcp tls detail
Muito bom Bruno! Mto simples de entender.
ResponderExcluir