Muitos clientes pedem para que o acesso às API´s seja feito por https ou seja http sobre SSL (Secured Socked Layer) aonde as chamadas são protegidas por criptografia, mas como fazemos isso?


Requisitos

  1. Certificado SSL no formato pfx, se o cliente usar balanceador de carga o certificado precisa ser wilcard
  2. Um nome do servidor registrado em dominio (DNS), para uso de SSL é proibido usar o IP do servidor
  3. Ter as portas 80 e 443 abertas para o servidor - verificar com a infra do cliente
  4. Registrar o broker para acessar o SSL na porta 443


Sem qualquer um dos requisitos acima não conseguimos liberar o acesso ao SSL, no caso do certificado, caso o cliente não esteja usandp um balanceador de carga, podemos usar o Let´s Encrypt, que é um certificado Open Source com validade de 90 dias, os certificado comerciais tem validade de 1 ano.


Registrando o broker para usar o certificado ssl

A primeira coisa antes de instalar o certificado é pegar a Impressão Digital do certificado , para isso abra uma janela de comando como administrador e digite o seuinte comando no diretóriuo aonde está o certificado:


certiutil.exe -p senhadocertificao nomedocertificado.pfx | findstr /c:"Cert Hash(sha1)"

ps: troque o senhadocertificado e nomedocertificado pelos valores desses campos


esse comando vai voltar o numero necessário para registrar o broker 


após guardar esse número podemos instalar o certificado ssl com o seguinte comando


certutil -p senhadocertificado  -importpfx nomedocertificado.pfx


e agora primeiro removemos o registro anterior com os seguintes comandos:


netsh http delete sslcert ipport=0.0.0.0:80
netsh http delete sslcert ipport=0.0.0.0:443 


e finalmente registramos o certificado com esses comandos
netsh http add sslcert ipport=0.0.0.0:80 certhash=impressaodocertificado appid={00112233-4455-6677-8899-AABBCCDDEEFF}
netsh http add sslcert ipport=0.0.0.0:443 certhash=impressaodocertificado appid={00112233-4455-6677-8899-AABBCCDDEEFF}


após isso basta reiniciar o broker e a API estará respondendo com SSL, lembrando que para SSL não é necessário identificar a porta e o broker vai usar a porta 443


ex: https://servidor.dominio.com/api/millenium_eco/$help


Usando o let´s encrypt

Para utilizar o Let´s Encryot eu criei um arquivo de lotes (bat) que deve ser colocado na pasta wts com outros dois utlitários na pasta c:\sys\ssl

le64.exe RegSSLServer.exe GetCert.bat

Após criar a pasta e colocar esses 3 arquivos lá, edite o arquivo getcert.bat e mude as seguintes linhas:


set name=piziitoys
set domain=millenniumhosting.com.br


aonde name deve-se colocar o nome do servidor ou cliente e na linha domain o dominio principal

No caso do Let´s Encrypt basta agendar esse bat para rodar a cada 60 dias, ele faz a emissão do certificado e o registro do mesmo no broker

  • Sem rótulos