Problema de API / SSL intermitente

1

Eu tenho trabalhado com uma API há algum tempo, com as quais as chamadas funcionam na maior parte do tempo, porém ocasionalmente (de 1 a 2 vezes por dia por cerca de uma hora, embora seja completamente imprevisível quando e por quanto tempo!) Recebo a seguinte mensagem de erro:

"Ocorreu um erro: SSL: nenhum nome de assunto de certificado alternativo corresponde ao nome de host de destino 'api.xxxxx.com'"

Tenho monitorado a API tanto com chamadas programadas do meu servidor quanto externamente usando o runscope e também manualmente com o Postman. Quando minhas chamadas de servidor têm o problema, o runscope e o Postman não sugerem que seja um problema do meu lado.

FYI Estou consultando a API de um servidor linux usando PHP para executar autenticação básica com file_get_contents e Curl - ambas as abordagens exibem o mesmo problema.

Tendo trabalhado com o super prestativo time de desenvolvedores do api, parece que, ao usar o comando openssl:

echo | openssl s_client -showcerts -servername api.XXXXX.com -connect api.XXXXX.com:443 2 > / dev / null | openssl x509 -inform pem -noout -text

meu servidor de alguma forma está apontando o domínio da API para o meu, ou seja, este comando gera meu próprio certificado SSL e não o da API.

Alguém sabe como consertar isso e / ou impedir que isso aconteça novamente?

    
por user1419810 18.04.2016 / 16:37

1 resposta

0

um nome alternativo de assunto é uma maneira de usar um certificado para vários hosts virtuais - você está essencialmente recebendo um erro de incompatibilidade de nome ao se conectar ao servidor, em algum momento você está se conectando a um URL seguro que o certificado não conhece, cole todos os URLs do endpoint da API nesse link do verificador

se você tiver uma api myapi.example.com e um certificado assinado, não poderá fazer chamadas seguras para myotherapi.example.com, a menos que tenha especificado myotherapi.example.com como um nome alternativo de assunto ou tenha um certificado curinga .

o fato de fazer isso apenas uma vez por dia pode estar relacionado ao balanceamento de carga; se você tiver dois ou mais servidores em um pool de balanceamento de carga, certifique-se de que o carregamento off-line de SSL seja aplicado a ambos os servidores; direcionar você ocasionalmente para um host com um certificado autoassinado (se você tiver criptografado o canal entre seu balanceador de carga e seus hosts) - se os servidores forem carga balanceada e SSL for off carregado para ambos os servidores corretamente - então certifique-se de que apache ServerName é exatamente o mesmo, ou seja, não api1.example.com e api2.example.com

Por fim, verifique se você tem apenas uma entrada de DNS apontando para o IP virtual dos balanceadores de carga

    
por 18.04.2016 / 17:22