Como configurar certificados?

A partir da release 4.3.0.0 da API Platform, a configuração completa de certificados é feita em três telas do API Manager:

  • Certificates (Virtual Hosts  Certificates). Aqui o certificado propriamente dito é cadastrado.

  • Inbound Addresses (encontrada em Menu principal  Virtual Hosts). Aqui se define o endereço ao qual o certificado responderá.

  • Environments (encontrada em Menu principal  Virtual Hosts). Aqui são criados contextos que complementam os endereços definidos na tela Inbound Addresses. Com a combinação inbound address + environment, definimos o caminho que será utilizado para acesso às APIs.

Exemplo:

  • Certificado: *sensedia.com

  • Inbound Address: demo.sensedia.com

  • Environmment: demo.sensedia.com/dev

Nesse cenário, todos os environments criados a partir do inbound address demo.sensedia.com utilizarão o certificado *sensedia.com.

mTLS

A troca mútua de certificados possui dois lados, cada um com suas respectivas credenciais.

Estas são as credenciais utilizadas na configuração de mTLS:

  • Parceiro (quem realiza a chamada):

    • certificado_parceiro.pem: certificado propriamente dito.

    • privateKey_parceiro.pem: chave privada.

    • ca_parceiro.pem: Trusted CA — certificado da autoridade certificadora que gerou o certificado do parceiro.

  • Host (quem recebe a chamada):

    • certificado_host.pem: certificado propriamente dito.

    • privateKey_host.pem: chave privada.

    • chain_host.pem: cadeia de certificados gerada na criação do certificado usado no inbound address.

Com esses dados em mãos, o cadastro das credenciais é feito na tela Virtual Hosts  Certificates do API Manager, após clicar no botão +. Para o cadastro de certificado utilizado por um inbound address, marcar a opção Inbound Certificate. Estes são os campos que devem ser preenchidos:

  • Name: nome identificador do certificado.

  • Certificate Body: corpo do certificado do host (certificado_host.pem).

  • Private Key: chave privada do host (privateKey_host.pem)

  • Certificate Chain: cadeia de certificado do host (chain_host.pem)

  • Trusted CA: Trusted CA do parceiro (ca_parceiro.pem).

Feita a inserção do certificado no API Manager, na tela Inbound Addresses é possível atribuí-lo ao endereço ao qual ele responderá. Para isso, escolha HTTPS ou HTTP|HTTPS no campo Protocol Type, que abrirá outros campos específicos de segurança. Em Security, escolher mTLS, em TLS Version, definir o intervalo de versões TLS suportadas e, em Certificates, selecionar o certificado cadastrado.

A partir dessas configurações, todo environment criado com esse inbound address como base passará a receber chamadas com conexão mTLS.

Exemplo

Uma possível chamada realizada pelo parceiro é:

curl -X GET --cacert ca_parceiro.pem --cert certificado_parceiro.pem --key privateKey_parceiro.pem https://inbound-url/basepath -v

Com as configurações acima devidamente realizadas, o comportamento esperado é que ambos os lados realizem as validações dos certificados que receberam:

  • o parceiro valida, em sua trusted_store, o certificado cadastrado no inbound address;

  • o host valida o certificado que recebeu do parceiro, já que a Trusted CA do parceiro foi cadastrada no Manager.

Thanks for your feedback!
EDIT

Share your suggestions with us!
Click here and then [+ Submit idea]