Introduction
Este documento descreve como criar um certificado autoassinado que pode ser usado pelo CloudCenter com vários URLs.
Prerequisites
Requirements
A Cisco recomenda que você tenha conhecimento destes tópicos:
Componentes Utilizados
As informações neste documento são baseadas em CentOS7.
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, make sure that you understand the potential impact of any command.
Problema
Os certificados que vêm como padrão com o CloudCenter, ou que podem ser criados com o uso do assistente de configuração do Cisco Call Manager (CCM), não têm um nome alternativo de assunto (SAN) que alguns navegadores, como o Google Chrome, tratam como um erro e o avisam. Isso pode ser substituído, mas sem SANs, um certificado só pode ser válido de um URL específico.
Por exemplo, se você tiver um certificado válido para o endereço IP 10.11.12.13, se você tiver um nome de Sistema de Nome de Domínio (DNS) de www.opencart.com, receberá um erro de certificado porque esse URL não é para que serve o certificado (isto é verdade mesmo se www.opencart.com estiver listado no arquivo de hosts como o que pertence a 10.11.1.1 2.13). Isso pode ser feito se os sublocatários do CloudCenter estiverem usando o SSO único (Single Sign On), pois cada servidor SSO tem seu próprio URL.
Solução
A maneira mais fácil de corrigir esse problema é criar um novo certificado autoassinado que tenha SANs que liste qualquer URL que o direciona ao mesmo endereço IP. O guia é uma tentativa de aplicar as melhores práticas a esse processo.
Etapa 1. Navegue até o diretório raiz e faça uma nova pasta para abrigar os certificados:
sudo -s
cd /root
mkdir ca
Etapa 2. Navegue até a nova pasta e faça subpastas para organizar os certificados, as chaves privadas e os registros.
cd ca
mkdir certs crl newcerts private
chmod 700 private
touch index.txt
echo 1000 > serial
Etapa 3. Copie o conteúdo do CAopenssl.conf para /root/ca/openssl.cnf
Note: Este arquivo contém as opções de configuração para uma autoridade de certificação (CA) e opções padrão que podem ser adequadas para o CloudCenter.
Etapa 4. Gere uma chave privada e um certificado para a AC.
openssl genrsa -aes256 -out private/ca.key.pem 4096
chmod 400 private/ca.key.pem
openssl req -config openssl.cnf -key private/ca.key.pem -new -x509 -days 7300 -sha256 -extensions v3_ca -out certs/ca.cert.pem
chmod 444 certs/ca.cert.pem
Etapa 5. Sua CA é a forma mais avançada de verificar se qualquer certificado é válido, esse certificado nunca deve ser acessado por pessoas não autorizadas e nunca deve ser exposto à Internet. Devido a essa restrição, você precisa criar uma CA intermediária que assine o certificado final, isso cria uma pausa na qual, se o certificado de autoridade intermediária for comprometido, ele poderá ser revogado e uma nova será emitida.
Etapa 6. Crie um novo subdiretório para a CA intermediária.
mkdir /root/ca/intermediate
cd /root/ca/intermediate/
mkdir certs crl csr newcerts private
chmod 700 private
touch index.txt
echo 1000 > serial
echo 1000 > /root/ca/intermediate/crlnumber
Passo 7. Copie o conteúdo de Intermediateopenssl.conf para /root/ca/intermediate/openssl.cnf .
Note: Este arquivo contém opções de configuração quase idênticas para a CA, além de alguns pequenos ajustes para torná-lo específico para um intermediário.
Etapa 8. Gere a chave intermediária e o certificado.
cd /root/ca
openssl genrsa -aes256 -out intermediate/private/intermediate.key.pem 4096
chmod 400 intermediate/private/intermediate.key.pem
openssl req -config intermediate/openssl.cnf -new -sha256 -key intermediate/private/intermediate.key.pem -out intermediate/csr/intermediate.csr.pem
Etapa 9. Assinar o certificado intermediário com o certificado CA, cria uma cadeia de confiança que o navegador usa para verificar a autenticidade de um certificado.
openssl ca -config openssl.cnf -extensions v3_intermediate_ca -days 3650 -notext -md sha256 -in intermediate/csr/intermediate.csr.pem -out intermediate/certs/intermediate.cert.pem
chmod 444 intermediate/certs/intermediate.cert.pem
Etapa 10. Crie uma cadeia de CA, uma vez que não deseja a AC na Internet, você pode criar uma cadeia de CA que os navegadores usam para verificar a autenticidade até a CA.
cat intermediate/certs/intermediate.cert.pem certs/ca.cert.pem > intermediate/certs/ca-chain.cert.pem
chmod 444 intermediate/certs/ca-chain.cert.pem
Etapa 11. Crie uma nova chave e certificado para o CCM.
openssl genrsa -out intermediate/private/ccm.com.key.pem 2048
openssl req -new -sha256 -key intermediate/private/ccm.com.key.pem -subj "/C=US/ST=NC/O=Cisco/CN=ccm.com" -reqexts SAN -config <(cat intermediate/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:ccm.com,DNS:www.ccm.com,IP:10.11.12.13")) -out intermediate/csr/ccm.com.csr
Etapa 12. Isso tem todos os campos obrigatórios no comando e precisa ser editado manualmente.
- /C=EUA refere-se ao país (limite de 2 caracteres)
- /ST=NC refere-se ao Estado e pode incluir espaços
- /O=A Cisco refere-se à Organização
- /CN=ccm.com refere-se ao nome comum, que deve ser o URL principal usado para acessar o CCM.
- SAN\nsubjectAltName= são os nomes alternativos, o nome comum deve estar nessa lista e não há limite para quantas SANs você tem.
Etapa 13. Assinar o certificado final utilizando o certificado intermédio.
openssl ca -config intermediate/openssl.cnf -extensions server_cert -days 375 -notext -md sha256 -in intermediate/csr/ccm.com.csr -out intermediate/certs/ccm.com.cert.pem
Etapa 14. Verifique se o certificado foi assinado corretamente.
openssl verify -CAfile intermediate/certs/ca-chain.cert.pem intermediate/certs/ccm.com.cert.pem
Etapa 15. Ele pode retornar um OK ou um Fail.
Etapa 16. Copie o novo certificado, é a chave e a cadeia CA para a pasta Catalina.
cd /root/ca/intermediate/certs
cp ccm.com.cert.pem /usr/local/tomcat/conf/ssl/ccm.com.crt
cp ca-chain.cert.pem /usr/local/tomcat/conf/ssl/ca-chain.crt
cd ../private
cp ccm.com.key.pem /usr/local/tomcat/conf/ssl/ccm.com.key
Etapa 17. Conceda a propriedade do cliente e defina as permissões corretamente.
chown cliqruser:cliqruser ccm.com.crt
chown cliqruser:cliqruser ccm.com.key
chown cliqruser:cliqruser ca-chain.crt
chmod 644 ccm.com.crt
chmod 644 ccm.com.key
chmod 644 ca-chain.crt
Etapa 18. Faça backup do arquivo server.xml antes de fazer alterações.
cd ..
cp server.xml server.xml.bak
Etapa 19. Editar server.xml:
- Localize a seção que começa com <Connector port="10443" maxHttpHeaderSize="8192"
- Altere SSLCertificateFile para apontar para ccm.com.crt
- Alterar SSLCertificateKeyFile para apontar para ccm.com.key
- Alterar SSLCACertificateFile para apontar para ca-chain.crt
Etapa 20. Reinicie o Tomcat.
service tomcat stop
service tomcat start
Etapa 21. O CCM agora usa o novo certificado válido para todos os nomes DNS e endereços IP especificados na Etapa 13.
Etapa 22. Como a CA foi criada no momento do guia, os navegadores não a reconhecerão como válida por padrão, é necessário importar manualmente o certificado.
Etapa 23. Navegue até o CCM com o uso de qualquer URL válido e pressione Ctrl+Shift+i, o que abre as ferramentas do desenvolvedor.
Etapa 24. Selecione Exibir certificado conforme mostrado na imagem.
Etapa 25. Selecione Detalhes conforme mostrado na imagem.
Etapa 26. Selecione Copiar para arquivo conforme mostrado na imagem.
Etapa 27. Se você obtiver erros sobre uma CA não confiável, navegue até Certification Path para exibir o certificado Intermediário e Raiz. Você pode clicar neles e exibir seu certificado e também copiá-los para arquivos como mostrado na imagem.
Etapa 28. Depois de fazer o download dos certificados, siga as instruções do sistema operacional (SO) ou do navegador para instalar esses certificados como autoridade confiável e autoridades intermediárias.