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
- Certificado SSL no formato pfx, se o cliente usar balanceador de carga o certificado precisa ser wilcard
- Um nome do servidor registrado em dominio (DNS), para uso de SSL é proibido usar o IP do servidor
- Ter as portas 80 e 443 abertas para o servidor - verificar com a infra do cliente
- 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