Integração com o Certificate Enroll
Visão geral
Neste tutorial, você vai aprender como integrar com o Certificate Enroll, um serviço da Redtrust que permite que aplicações gerem chaves com segurança e solicitem a emissão de certificados digitais a partir de um ambiente controlado.
Este tutorial é destinado a desenvolvedores de parceiros da Redtrust com capacidade para emitir certificados e que desejam se integrar ao serviço de enrollment da Redtrust. Para acompanhá-lo, é necessário ter conhecimentos básicos sobre APIs HTTP, autenticação com token bearer e certificados digitais.
Contexto
Essa integração permite que um parceiro da Redtrust com capacidade de emitir certificados gere as chaves com segurança no servidor da Redtrust e que os certificados digitais sejam gerados ao final.
O Certificate Enroll gerencia todo o fluxo de emissão de certificados, incluindo:
- Autenticação do usuário
- Emissão de token
- Geração de chave
- Solicitação e renovação de certificado
O fluxo de integração é composto por duas fases principais:
-
Autenticação e obtenção do token O usuário se autentica com a Redtrust, que emite um JWT (JSON Web Token) para autorizar o acesso.
-
Geração de chave e emissão do certificado Você utiliza os endpoints da API para concluir o processo de emissão.
Antes de começar
Para integrar com o novo serviço, você precisará das seguintes informações fornecidas pelo cliente Redtrust:
- Endereço IP ou nome do host do servidor Redtrust.
- A porta utilizada para acessar o Sign Service (por padrão, 8083).
- Nome do usuário de aplicação utilizado pelo serviço.
- (Opcional) Nome do domínio.
Você também vai precisar das seguintes informações fornecidas pelo operador da aplicação cliente:
- URL de redirecionamento para onde as credenciais temporárias serão enviadas. Este endereço precisa estar registrado na Redtrust para autorizar o redirecionamento e é essencial para obter o token final (JWT).
Etapa 1: Autenticação e obtenção do token
Requisição de autenticação
Acesse a URL do serviço.
https://[HOSTNAME_OU_IP]:[PORTA]/authclient/auth/loginrequest?Consumer=RA_API&Domain=[DOMÍNIO]&RedirectUrl=[URL_DE_REDIRECIONAMENTO]×tamp=[TIMESTAMP]&partner=[NOME_PARCEIRO]&hmac=[ASSINATURA_HMAC]
Por exemplo:
https://localhost:8083/authclient/auth/loginrequest?Consumer=RA_API&Domain=local.users&RedirectUrl=https%3A%2F%2Fgoogle.es%3Ftkn%3D×tamp=1744719496&partner=CA_DEMO&hmac=c360b2d221a55da777a5ba75264d8800ce6ebe89f41aa8b6da7e1a78bb601055
Para uma lista de parâmetros compatíveis, veja Parâmetros suportados.
Cabeçalhos obrigatórios
Para garantir a legitimidade de cada requisição, você deve incluir os seguintes cabeçalhos HTTP:
| Cabeçalho | Descrição |
|---|---|
x-partner-name | Nome da aplicação cliente, escrito em letras maiúsculas. Usado para identificar e autorizar o parceiro que está fazendo a chamada. |
x-request-timestamp | Um timestamp UNIX indicando quando a requisição foi feita. Isso ajuda a evitar ataques de repetição. Consulte Unix TimeStamp - Epoch Converter. |
x-hmac-signature | Assinatura criptográfica usada para validar a requisição. Ela é gerada assinando a mensagem PARTNER_NAME:UNIX_TIMESTAMP usando o algoritmo HMAC-SHA256 com um segredo compartilhado. |
A x-hmac-signature permite que o servidor verifique a autenticidade e integridade da requisição usando o mesmo segredo compartilhado. Qualquer requisição com assinatura ausente, malformada ou inválida será rejeitada.
Redirecionamento com token temporário
Se a autenticação for concluída com sucesso, o servidor redirecionará automaticamente o usuário para a URL fornecida, adicionando o parâmetro tkn:
https://sua-aplicacao.com?tkn=TOKEN_TEMPORARIO
Sua aplicação deve interceptar esse parâmetro tkn na URL redirecionada. Essa credencial temporária deve então ser trocada por um token de acesso permanente e um token de atualização (refresh token), chamando um endpoint específico (consulte a etapa 2).
Etapa 2: Troca de token
Para concluir a autenticação, você deve trocar o token temporário (tkn) recebido no redirecionamento por um token de acesso e um token de atualização. Essa troca é feita por meio dos endpoints abaixo:
Endpoint: /authapi/v1/login_by_temp_token
Method: GET
Authentication: Authorization: Bearer <accessToken>
Body:
{
"temporalToken": "string"
}
Resposta
{
"message": "string",
"messageType": "SUCCESS",
"errorCode": "ERROR_CODE",
"data": {
"refreshToken": "string",
"accessToken": "string",
"expiration": "<dateTime>"
}
}
Endpoint: /authapi/v1/refresh-token
Method: PUT
Authentication: Authorization: Bearer <accessToken>
Content-Type: application/json
Body:
{
"refreshToken": "string"
}
Resposta
{
"message": "string",
"messageType": "SUCCESS",
"errorCode": "ERROR_CODE",
"data": {
"refreshToken": "string",
"accessToken": "string",
"expiration": "<dateTime>"
}
}
Endpoint: /authapi/v1/logout
Method: DELETE
Authentication: Authorization: Bearer <accessToken>
Body: None
Content-Type: application/json
Resposta
{
"message": "string",
"messageType": "SUCCESS",
"errorCode": "ERROR_CODE",
"data": {}
}
Etapa 3: Geração e emissão do certificado
As requisições relacionadas a certificados devem ser enviadas para a seguinte URL base:
https://[HOSTNAME_OU_IP]:[PORTA]/raapi
Por exemplo: https://localhost:8082/raapi/v1/csr/create ou https://localhost:8082/raapi/v1/csr/finalize
Para emitir um certificado, você deve chamar dois endpoints em sequência:
Endpoint: /raapi/v1/csr/create
Method: GET
Authentication: Authorization: Bearer <accessToken>
Content-Type: application/json
Body:
{
"dn": [
{
"attribute": "<string>",
"value": "<string>"
},
{
"attribute": "<string>",
"value": "<string>"
}
],
"hashType": "SHA384",
"keyLength": "<integer>",
"keyType": "DSA",
"provider": "<string>",
"requestCode": "<string>",
"info": {
"proident_9b": "<string>"
},
}
Essa requisição retorna um CSR e um requestCode, que serão usados para concluir o processo.