Autosserviço de credenciais e certificado

Confira neste guia como gerar suas credenciais e o certificado dinâmico para acessar as APIs dos produtos PIX Indireto, PISP, Corban Digital, Extrato (Account Statement) e FX as a Service - Câmbio.

Importante

Essa documentação é exclusiva para os produtos:

• PISP
• Corban Digital
• Extrato (Account Statement)

Para gerar as credenciais e o certificado dinâmico para os demais produtos, acesse a documentação Como obter as credenciais e gerar o certificado dinâmico?.

Objetivo

Esta documentação explica alguns conceitos e nomenclaturas importantes tanto para geração das credenciais quanto a geração do certificado dinâmico. O intuito também é demonstrar o passo a passo para gerar as credenciais para os ambientes de homologação e produção, e posteriormente, o fluxo da geração do certificado dinâmico.o.

Importante

Para APIs de cartões não é preciso gerar o certificado dinâmico via STS, pois este processo não é um padrão para todo o banco. Ou seja, depende do negócio, comunidade, ou segurança de acordo com o projeto.

Conceitos

Certificado dinâmico (CSR)

O Certificate Signing Request (CSR) é um certificado não assinado, usado apenas no ambiente de produção, gerado pelo responsável técnico e que contém os dados da empresa requisitante e sua chave pública.

Esse procedimento é realizado para que ao solicitar um certificado ao Itaú o solicitante identifique sua aplicação e receba um certificado de uso único e exclusivo.

O CSR (Certificate Signing Request) é o arquivo que contém a chave pública do certificado e as demais informações de identificação. Utilizado para requisitar ao STS Itaú a assinatura do certificado.


Seu formato segue o seguinte padrão:
-----BEGIN CERTIFICATE REQUEST-----
...
-----END CERTIFICATE REQUEST-----

A segurança do processo é baseada no conceito de chave assimétrica ou chave pública.

Importante

Para renovar/gerar o certificado dentro do prazo de validade de 365 dias, basta utilizar o arquivo .CSR gerado anteriormente e gerar novas credenciais para o ambiente conforme sua necessidade (homologação ou produção).

Credenciais

As credenciais são o conjunto client_id + client_secret, ambas permitem identificar a aplicação que está enviando uma requisição.


Client ID

O Client ID é um valor alfanumérico exclusivo gerado de forma aleatória pelo Google Analytics.


Client secret

O Client secret é uma informação alfanumérica necessária para gerar o certificado dinâmico. Esta informação é altamente sensível, portanto, mantenha-o sempre em um lugar seguro.


Chave privada

A chave privada é um valor altamente sensível. Portanto, deve ser armazenada de forma segura, ela será requisitada para comprovar que o certificado está em uso pelo seu dono no processo de mutual TLS.


Seu formato segue o seguinte padrão:
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----

SSL

O SSL (Secure Socket Layer) na requisição, oferece total segurança entre aplicativos cliente/servidor, preservando a integridade e a veracidade do conteúdo trafegado na rede, por meio da autenticação das partes envolvidas com a troca destas informações. A versão recomendada pelo banco é a 1.1.1.c ou superior.


Token temporário

O token temporário é um valor alfanumérico que representa a autenticação da credencial. Ele é obrigatório para consumo das APIs disponibilizadas pelo Itaú assim como o certificado, e sua validade é de 5 minutos após sua geração.


Como faço para obter um token temporário?

Para obter um token temporário, é necessário gerar suas credenciais diretamente no Portal do desenvolvedor para o ambiente conforme sua necessidade.

Importante

Lembre-se: o token temporário emitido tem validade de 5 minutos e deve ser utilizado durante esse período para o consumo das APIs, sendo necessário sua renovação após expirado.


Pré-requisitos para gerar o certificado dinâmico


Credenciais – Tenha o (client_id, token temporário e a chave de seção) geradas do Portal do desenvolvedor.


Produto contratado: Tenha no mínimo um destes produtos contratados (PIX Indireto, PISP, Corban Digital, Extrato (Account Statement) e FX as a Service - Câmbio);


Ambiente de desenvolvimento configurado - Tenha um ambiente de desenvolvimento configurado em uma das linguagens de programação. Exemplo: Java, C#, Python, cURL ou PHP.


Ou tenha alguma ferramenta que permita a execução de requisições web para executar chamadas em APIs Rest. Exemplo: Postman, Insomnia ou cURL.


OpenSSL - Tenha o OpenSSL na versão 1.1.1 recomendada pelo banco instalado em sua máquina, pois será a ferramenta utilizada neste tutorial para gerar o arquivo CSR e validar se tudo ocorreu como o esperado.

Importante

Por padrão o OpenSSL vem por default para quem tem o Git Bash instalado na máquina.


Passo a passo para gerar as credenciais (homologação ou produção)

Confira os passos abaixo para gerar credenciais tanto para homologação quanto produção.


Passo 1 - Realizar o Login no Portal do desenvolvedor;

Passo 2 - Clicar em gestão de credenciais, localizado no menu lateral à esquerda;

Importante

Somente o usuário administrador tem permissão para gerar as credenciais.

figura1.JPG

Figura 01: A imagem acima demonstra a home do Portal do Desenvolvedor com destaque na opção gestão de credenciais.


Passo 3 - Escolher o ambiente de homologação ou produção que a credencial será utilizada;


  • Homologação: Caso opte pelo ambiente de homologação e ainda não tenha gerado nenhuma credencial, será apresentada uma mensagem informando que você não gerou nenhuma credencial para este ambiente.

2.JPG Figura 02. A imagem acima demonstra a página de gestão de credenciais para homologação e uma mensagem informando que não existe credenciais cadastradas para este ambiente e que para cadastrar, bastar acionar o botão “gerar credencial”.


  • Produção: Caso opte pelo ambiente de produção e ainda não tenha gerado nenhuma credencial, será apresentada uma mensagem informando que você não gerou nenhuma credencial neste ambiente.

3.JPG Figura 03. A imagem acima demonstra a página de gestão de credenciais para produção e uma mensagem informando que não existe credenciais cadastradas para este ambiente e que para cadastrar, bastar acionar o botão “gerar credencial”.


Passo 4 - Clicar no botão gerar credencial após escolher o ambiente que a credencial será utilizada;

4.JPG Figura 04. A imagem acima demonstra o botão “gerar credencial” para gerar suas credenciais conforme o ambiente escolhido.


Passo 5 - Após clicar no botão gerar credencial, preencha o formulário de acordo com as informações solicitadas:


a) Nome da aplicação: Não é permitido espaços entre as palavras e com limite máximo de até 50 caracteres. Exemplo: (APP_de_cobrança; APP_de_pagamento; Recebimento_aplicação,etc.);

Importante

Não será permitido editar o nome da aplicação após a geração da credencial, portanto, escolha um nome que o ajude na sua identificação.


b) Descrição da aplicação (opcional): Caso prefira, insira neste campo um texto descritivo com as informações sobre a sua aplicação, para facilitar a identificação da credencial. Exemplo: (aplicativo de cobrança do parceiro XPTO);


c) Informe o ambiente que a credencial será utilizada: Selecione uma das opções (homologação ou produção) para visualizar quais produtos estão disponíveis para o ambiente escolhido;

Importante

Caso o produto contratado não tenha ambiente de produção, ele não será apresentado em tela caso esse ambiente seja selecionado.

d) Selecione os produtos que devem utilizar essa credencial: Será disponibilizado em lista os produtos disponíveis para o ambiente selecionado. Escolha um ou mais produtos que devem utilizar esta credencial.


5.JPG Figura 05. A imagem acima demonstra os campos do formulário a ser preenchido com as informações necessárias para gerar a credencial conforme o ambiente selecionado.


Passo 6 - Após preencher o formulário, clicar no botão gerar credencial;

6.JPG

Figura 06. A imagem acima demonstra os campos do formulário corretamente preenchidos, com destaque no botão “gerar credencial”.


Passo 7 - Após clicar no botão gerar credencial será apresentado um aviso importante;

7.JPG

Figura 07. A imagem acima demonstra um aviso importante a respeito do client_secret prestes a ser gerado no próximo passo, informando que ele será disponibilizado apenas uma vez e caso o perca será necessário gerar uma nova credencial para obtê-lo novamente.

Importante

Neste passo, por questões de segurança:

  • O client_secret por ser um dado sensível será disponibilizado uma única vez, por isto, é fortemente recomendado que o guarde em um local seguro.
  • Caso o perca, será necessário gerar uma nova credencial para obter um novo client_secret.

Passo 8 - Clicar em:

  • Cancelar: para interromper a geração da credencial:

cancelar - figura8.png

Figura 08. A imagem acima demonstra um aviso com destaque ao botão para cancelar a geração da credencial.

  • Confirmar: para prosseguir com a geração da credencial:

botão confirmar.png

Figura 09. A imagem acima demonstra o aviso com destaque ao botão para confirmar a geração da credencial.


Ao confirmar, será apresentado uma mensagem informando que a credencial foi criada com sucesso:


figura 10.png

Figura 10. A imagem acima demonstra a mensagem informando que a credencial foi criada com sucesso.


Após a confirmação, será disponibilizada uma página com a credencial criada, o token temporário, o client_ID e o client_secret, de acordo com o ambiente escolhido:


figura11.png

Figura 11. A imagem acima demonstra a página com a credencial criada, com todos os campos corretamente preenchidos, juntamente com o token temporário, o client_ID e o client_secret.


Neste momento, você já tem sua credencial gerada para o ambiente e produtos que você escolheu, ordenadas por data e hora da criação, sendo da mais recente para a mais antiga.


Para conferir as informações de cada credencial criada, basta expandir cada geração.

9.JPG Figura 12. A imagem acima demonstra a página de gestão das credenciais geradas, o qual é permitido expandir para ver as informações referente a cada geração.


Após expandir a geração escolhida será apresentado as seguintes informações:


a) Nome da aplicação com os produtos selecionados anteriormente;

b) Data/hora da geração: dia e horário que a credencial foi gerada;

c) Descrição da aplicação: caso você tenha optado por preencher esse campo, será apresentado a descrição correspondente a esta credencial;

d) Usuário gerador: é o usuário administrador o qual possui permissão para gerar a credencial;

e) Token temporário: informação alfanumérica com validade de 5 minutos, necessária para gerar o certificado dinâmico;

f) Cliente ID: informação alfanumérica gerada de forma aleatória;

g) Client secret: informação necessária para gerar o certificado dinâmico e só ficará disponível para visualização apenas uma vez. Recomenda-se que seja guardado em um local seguro.

h) Botão atualizar: esse botão é responsável por gerar um novo token a qualquer momento;

i) Botão copiar: esse botão é responsável por copiar o conteúdo do campo correspondente para a área de transferência.


figura13.JPG Figura 13. A imagem acima demonstra uma geração expandida e com os campos correspondentes da nova credencial gerada.

Importante

Ao realizar o logout do portal do desenvolvedor e realizar novamente o login, não será permitido visualizar o client_secret.

Por questão de segurança essa informação não fica disponível por tempo indeterminado, caso necessite dessa informação, é necessário gerar uma nova credencial para ter acesso a um novo client_secret.

figura 14.png

Figura 14. A imagem acima exibe um aviso na página de gestão de credenciais no campo do client secret, informando que não é possível visualizá-lo por tempo indeterminado. Isso acontece por questões de segurança quando é realizado o logout do portal do desenvolvedor e posteriormente, o login.

Renovar o token temporário

Após expirar o token temporário ou perder esta informação, é necessário gerar um novo token.


  1. Acionar o ícone atualizar para gerar um novo token;

figura 15.png

Figura 15. A imagem acima evidencia o ícone atualizar o token temporário.


  1. Insira o client_secret no campo correspondente e acione o botão confirmar;

figura 16.png

Figura 16. A imagem acima evidencia o campo client_secret a ser preenchido e o botão confirmar.


  • O token temporário será atualizado com sucesso e com validade de 5 minutos.

figura 17.png

Figura 17. A imagem acima evidencia o campo do token temporário com o token atualizado e na parte superior da imagem uma mensagem informando sucesso na atualização.


Parabéns! Você concluiu as etapas necessárias para gerar as credenciais e já tem em mãos o token temporário, cliente_ID, o client_secret, e neste momento você já está pronto para gerar seu certificado dinâmico.



Passo 9 - Gerar o Certificado Dinâmico.

Passo a passo para gerar o certificado dinâmico

  1. Faça o login no developer portal;
  2. Clique no botão gestão de certificados no menu lateral a esquerda.

Botão gestão de certificados Figura 18. A imagem acima evidencia o botão gestão de certificados.

  1. Clique no botão gerar certificado, no canto superior direito.

Botão gerar certificado Figura 19. A imagem acima evidencia o botão gerar certificado.

  1. Na tela de geração de certificado você deve:
    • Nomear o certificado, garanta que seja um nome único e que represente o certificado criado;
    • Informar o Client ID, gerado na gestão de credenciais;
    • Informar o Site ou APP da empresa;
    • Informar o país, estado e cidade;
    • Informar o Token da credencial, gerado na gestão de credenciais;
    • Ao final clicar em Gerar certificado.

Tela de geração de certificado Figura 20. A imagem acima evidencia a tela com o formulário de geração de certificado.

  1. Em seguida realize o download do certificado gerado clicando em Dowload de arquivos.

Realize o download do certificado gerado Figura 21. A imagem acima evidencia a tela com a mensagem "Realize o download do certificado gerado".

Pronto! O seu certificado foi gerado com sucesso!

Certificado gerado e download feito com sucesso Figura 22. A imagem acima evidencia a tela com a mensagem "Certificado gerado e download feito com sucesso".

Passo a passo para gerar o certificado dinâmico manualmente


1 - Escolha o seu sistema operacional e execute no OpenSSL os comandos correspondentes ao sistema escolhido;


  • Windows

  • Copiar o conteúdo abaixo;
openssl req -new -subj "//CN={{CLIENT_ID}}\OU={{SITE OU APP DO PARCEIRO}}\L={{CIDADE}}\ST={{ESTADO}}\C={{PAIS}}" -out ARQUIVO_REQUEST_CERTIFICADO.csr -nodes -sha512 -newkey rsa:2048 -keyout ARQUIVO_CHAVE_PRIVADA.key

Exemplo de como deve ficar o comando a ser executado:

openssl req -new -subj "//CN=56a29ee3-60fe-47f8-95d9-7538b80ccf04\OU=ABC LTDA\L=SAO PAULO\ST=SP\C=BR" -out ARQUIVO_REQUEST_CERTIFICADO.csr -nodes -sha512 -newkey rsa:2048 -keyout ARQUIVO_CHAVE_PRIVADA.key
  • Copie o comando com suas informações corretamente preenchidas e execute em seu terminal. O comando foi executado com sucesso, caso a saída abaixo seja exibida:
Generating a RSA private key
...........................+++++
...............................................................+++++
writing new private key to 'ARQUIVO_CHAVE_PRIVADA.key'

  • Linux e macOS

  • Copiar o conteúdo abaixo;
openssl req -new -subj "/CN={{CLIENT_ID}}/OU={{SITE OU APP DO PARCEIRO}}/L={{CIDADE}}/ST={{ESTADO}}/C={{PAIS}}" -out ARQUIVO_REQUEST_CERTIFICADO.csr -nodes -sha512 -newkey rsa:2048 -keyout ARQUIVO_CHAVE_PRIVADA.key

Exemplo de como deve ficar o comando a ser executado:

openssl req -new -subj "/CN=56a29ee3-60fe-47f8-95d9-7538b80ccf04OU ABC LTDA L=SAO PAULOST=SP/C=BR" -out ARQUIVO_REQUEST_CERTIFICADO.csr -nodes -sha512 - newkey rsa:2048 -keyout ARQUIVO_CHAVE_PRIVADA.key
  • Copie o comando com suas informações corretamente preenchidas e execute em seu terminal. O comando foi executado com sucesso, caso a saída abaixo seja exibida:
Generating a RSA private key
...........................+++++
...............................................................+++++
writing new private key to 'ARQUIVO_CHAVE_PRIVADA.key'

2 - Insira o client_id e token temporário gerados no Portal do desenvolvedor;

3- Troque o valor dos parâmetros de acordo com as instruções da tabela explicativa e não esqueça de remover as chaves {{ }} e não utilizar caracteres especiais.


Tabela explicativa

Parâmetro Descrição
{{CLIENT_ID}} É o Client_Id enviado pelo Itaú por meio do e-mail (após processo de descriptografia). Esse valor é fundamental para garantir a autenticidade do certificado, ele é comparado com o client_id contido no token temporário durante o processo de envio ao STS Itaú, portanto, redobre a atenção.
Exemplo a ser usado: 56a29ee3-60fe-47f8-95d9-7538b80ccf04
{{SITE OU APP DO PARCEIRO}} É um nome simples para identificar facilmente o serviço integrado ao Itaú. Uma sugestão é utilizar o nome do cliente/parceiro. Não use caracteres especiais.
Exemplo a ser usado: ABC LTDA
{{CIDADE}} Nome da cidade da empresa. Não use caracteres especiais.
Exemplo a ser usado: SAO PAULO
{{ESTADO}} / {{PAIS}} {{ESTADO}}: Nome do estado da empresa. Somente a UF.
Exemplo a ser usado: SP

{{PAIS}}: Nome do país da empresa. Somente o código internacional de duas letras.
Exemplo a ser usado: BR

9.1 - validar o certificado dinâmico (opcional)


Caso queira validar o certificado dinâmico após a geração, é necessário conferir se ambos os arquivos mencionados abaixo existem no diretório.


  • ARQUIVO_REQUEST_CERTIFICADO.csr- É o nome do arquivo certificado dinâmico (CSR) que será gerado no local que o comando foi executado.

  • ARQUIVO_CHAVE_PRIVADA.key - É o nome do arquivo que contém a chave privada do certificado, ele também é gerado no mesmo local do certificado dinâmico (CSR). É obrigatório mantê-lo armazenado em segurança, pois ele será utilizado pela aplicação na integração ao Itaú.

  • Você pode utilizar uma ferramenta conforme sua preferência para realizar esta validação;

  • Ou, executar o comando abaixo no OpenSSL;
openssl req -in ARQUIVO_REQUEST_CERTIFICADO.csr -noout -text

Se tudo ocorreu como o esperado, em nosso exemplo a saída seria similar a esta:

$ openssl req -in ARQUIVO_REQUEST_CERTIFICADO.csr -noout -text
Certificate Request:
    Data:
        Version: 1 (0x0)
        Subject: CN = 56a29ee3-60fe-47f8-95d9-7538b80ccf04, OU = ABC LTDA, L = SAO PAULO, ST = SP, C = BR
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus: ...
                Exponent: 65537 (0x10001)
        Attributes:
            a0:00
        Signature Algorithm: sha512WithRSAEncryption
            ...

Importante

  • O CN (Common Name) é o principal item a ser validado, ele deve ser exatamente igual ao client_id, devido ao processo de autorização no envio ao STS Itaú.
  • Observe que o CN, OU, L, ST, e C estão preenchidos de acordo com os parâmetros de exemplo. Somente prosseguir ao próximo passo se os valores estiverem de acordo com os fornecidos no passo 9 – gerar o certificado dinâmico.

Caso a validação não ocorra como o esperado, fale com a gente.

Passo 10 - enviar o certificado dinâmico


Após a criação do ARQUIVO_REQUEST_CERTIFICADO.csr, ele deverá ser enviado ao STS Itaú para concluir o processo de geração do Certificado Dinâmico.


  • O envio do arquivo CSR deverá ser feito por meio do endpoint https://sts.itau.com.br/seguranca/v1/certificado/solicitacao, que solicitará o token temporário para que a transferência seja finalizada, com as seguintes informações:

  • Header - Informe no header da requisição da API o token temporário gerado no Portal do desenvolvedor. Lembrando que a validade desse token é de 5 minutos.

Exemplo:

Authorization Bearer {access_token_tmp}
Content-Type: text/plain
  • Request Body - Informe todo o conteúdo do arquivo ARQUIVO_REQUEST_CERTIFICADO.csr no body da requisição.

Exemplo:

{conteudo_arquivo_csr}
  • Response Body - No retorno da chamada da API você receberá do STS o client_secret e o certificado emitido pelo Itaú no formato .crt, isso significa que a chamada foi realizada com sucesso.

Observe um exemplo do envio do Certificado Dinâmico com sucesso:

12.JPG

Figura 23. A imagem acima demonstra o statusCode=200 que significa sucesso da chamada e no body do Response trará na primeira linha o client-secret e nas demais linhas será o certificado emitido pelo Itaú no formato .crt.


Observe um exemplo do envio do Certificado Dinâmico com erro:

13.JPG

Figura 24. A imagem acima demonstra que o envio do certificado CSR apresenta o erro C800, a mensagem informa que o CSR é inválido e como ação é solicitado que o envio seja verificado.


Parabéns! Você já tem em mãos o client_secret e seu Certificado Dinâmico emitido pelo Itaú, agora você já pode começar a consumir nossas APIs.



Exemplos de envio do certificado dinâmico

Postman

O Postman é uma aplicação que permite realizar requisições HTTP a partir de uma interface simples, didática e intuitiva, com o objetivo de facilitar o teste e a depuração de serviços RESTful (Web APIs), por meio do envio destas requisições bem como a análise do seu retorno.


Com isso, é possível consumir facilmente serviços locais e na rede, enviar dados e efetuar testes sobre as respostas das requisições. Além disso, o Postman permite aos desenvolvedores analisar o funcionamento de serviços externos, a fim de saber como consumi-los.


E, pensando sempre em sua melhor experiência conosco, o portal Itaú for developers_ disponibiliza uma collection para lhe auxiliar na configuração do ambiente de testes via Postman.


Portanto, o primeiro passo para gerar e ativar o certificado dinâmico via Postman, é realizar o download da nossa Collection.

Dica

Você pode importar essa collection também em outra ferramenta, a exemplo o Insomnia.


Após a habilitação do Postman, o mesmo valida se está sendo enviado algum tipo de certificado SSL (Secure Socket Layer).

14.JPG

Figura 25. A imagem acima demonstra os parâmetros gerais do Postman, o qual valida se está sendo enviado algum tipo de certificado SSL na requisição.

Importante

Vale ressaltar que devem ser armazenados os dados retornados pelo Itaú.


Como enviar o certificado dinâmico via postman


Para importar via Postman o ARQUIVO_CERTIFICADO.crs e o ARQUIVO_CHAVE_PRIVADA.key após gerar o certificado dinâmico, siga os passos abaixo para configuração:


1 - Abra o Postman e clique no ícone da engrenagem, localizada no canto superior direito da página;

2- Acionar a opção Settings;

3 - Em seguida, clique na aba Certificates;

4 - Clicar na opção Add Certificate;

5 - Preencher os campos conforme as informações abaixo:


  • Host: api.itau.com.br;

  • CRT file: selecione o arquivo_certificado.crt;

  • KEY file: selecione o arquivo_chave_privada.key;


6 - Clicar em Add para adicionar o arquivo.

15.JPG

Figura 26. A imagem acima demonstra os 6 passos a serem seguidos para enviar o certificado via Postman.


Outros exemplos de envio em demais linguagens de programação

cURL
curl -i -k -X POST \
  --url https://sts.itau.com.br/seguranca/v1/certificado/solicitacao \
  -H "Content-Type: text/plain" \
  -H 'Authorization: Bearer {{access_token_tmp}}' \
  -d '{{CSR - Certificate Sign Request}}'
Java
HttpURLConnection httpConnection = null;
SSLContext ctx = null;
try {
    ctx = SSLContext.getInstance("TLS");
} catch (NoSuchAlgorithmException e1) {
    e1.printStackTrace();
}
try {
    ctx.init(new KeyManager[0], new TrustManager[] { new DefaultTrustManager() }, new SecureRandom());
} catch (KeyManagementException e1) {
    e1.printStackTrace();
}
SSLContext.setDefault(ctx);
try {
    URL targetUrl = new URL("https://sts.itau.com.br/seguranca/v1/certificado/solicitacao");
    httpConnection = (HttpURLConnection) targetUrl.openConnection();
    httpConnection.setDoOutput(true);
    httpConnection.setRequestMethod("POST");
    httpConnection.setRequestProperty("Content-Type", "text/plain");
    httpConnection.setRequestProperty("Authorization", "TOKEN TEMP");
    DataOutputStream wr = new DataOutputStream(httpConnection.getOutputStream());
    wr.writeBytes("CSR AQUI");
    wr.flush();
    wr.close();
    if (httpConnection.getResponseCode() != HttpURLConnection.HTTP_OK) {
        throw new Exception("Erro na geracao do certificado");
    }
    StringBuilder crt = new StringBuilder();
    try (Reader reader = new BufferedReader(
            new InputStreamReader(httpConnection.getInputStream(), Charset.forName(StandardCharsets.UTF_8.name())))) {
        int c = 0;
        while ((c = reader.read()) != -1) {
            if (c != 1)
                crt.append((char) c);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    String crtBody = crt.delete(0, crt.indexOf("\n") + 1).toString();
    System.out.println(crtBody);
    httpConnection.disconnect();
} catch (Exception e) {
    e.printStackTrace();
    //TODO
} finally {
    if (httpConnection != null) {
        httpConnection.disconnect();
    }
}
Python
import requests
def sendCertificate(csr, token):
    try:
        url = "https://sts.itau.com.br/seguranca/v1/certificado/solicitacao"
        payload = csr
        headers = {
            'Authorization': 'Bearer ' + token,
            'Content-Type': 'text/plain'
        }
        response = requests.post(url, data=payload, headers=headers)
        if response.status_code != 200:
            response.raise_for_status()
        crt = response.text.split("\n", 1)[1]
        print(crt)
    except Exception as e:
        raise Exception("Erro na geracao do certificado", e)
if __name__ == "__main__":
    token = "seu_token"
    csr = "seu_csr_aqui"
    sendCertificate(csr, token)
PHP
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://sts.itau.com.br/seguranca/v1/certificado/solicitacao");
curl_setopt($ch, CURLOPT_PORT, 443);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "CERTIFICADO AQUI");
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    "Content-Type: text/plain",
    'Authorization: Bearer ' . $token
));
$response = curl_exec($ch);
$info = curl_errno($ch) > 0
    ? array("curl_error" . curl_errno($ch) => curl_error($ch))
    : curl_getinfo($ch);
print_r($info);
curl_close($ch);
echo $response;
C#
public string SolicitarCertificado()
{
    var request = (HttpWebRequest)WebRequest.Create(
        "https://sts.itau.com.br/seguranca/v1/certificado/solicitacao"
    );
    request.ContentType = "text/plain";
    request.Method = "POST";
    request.Accept = "*/*";
    request.Headers.Add("Accept-Encoding", "gzip, deflate, br");
    request.Headers.Add("Authorization", "Bearer " + token);
    string conteudoCSR = File.ReadAllText(
        @"C:\caminho_certificado\ARQUIVO_REQUEST_CERTIFICADO.csr"
    );
    request.ContentLength = conteudoCSR.Length;
    string response = "";
    string responseSecret = "";
    Stream myWriter = null;
    try
    {
        using (var sw = new StreamWriter(request.GetRequestStream(), Encoding.ASCII))
        {
            sw.Write(conteudoCSR);
        }
        var requestResponse = (HttpWebResponse)request.GetResponse();
        response = new StreamReader(requestResponse.GetResponseStream()).ReadToEnd();
        StreamWriter fileCertificate = File.CreateText(
            @"C:\caminho_certificado\ARQUIVO_REQUEST_CERTIFICADO.crt"
        );
        var linhas = response.Split(Environment.NewLine.ToCharArray());
        foreach (var linha in linhas)
        {
            if (linha.Contains("Secret:"))
            {
                responseSecret = linha;
            }
            else
            {
                fileCertificate.WriteLine(linha);
            }
        }
        fileCertificate.Close();
        return responseSecret;
    }
    catch (Exception ex)
    {
        throw new Exception("Erro ao solicitar o token.\r\nDetalhe: " + ex.Message);
    }
    finally
    {
        if (myWriter != null)
            myWriter.Close();
    }
}

Importante

Caso receba o parâmetro x-itau-client-cert-error no header do response, significa que a chamada foi rejeitada por conta do certificado. Veja mais detalhes no tópico códigos de retorno da chamada do envio do certificado.

Parabéns! Você já tem em mãos o client_secret e seu Certificado Dinâmico emitido pelo Itaú, agora você já pode começar a consumir nossas APIs.

Importante

Para os endpoints api.itau.com.br, sts.itau.com.br, secure.api.itau e secure.api.cloud.itau.com.br deverá ser enviado o certificado em todas as requisições.

No entanto, caso tenha dúvidas sobre qual utilizar, acione o time Comercial ou o time de Implantação Técnica e sinalize seu ponto focal no Itaú. Mas caso prefira, também é possível entrar em contato por meio do formulário fale com a gente.


Códigos de retorno da chamada do envio do certificado

Código Motivo Ação
C100 Ausência do certificado na chamada Verifique se o certificado está sendo enviado para o destino.
C200 Certificado inválido Verifique se o certificado foi enviado corretamente ou se está ativo.
C300 Falha ao extrair dados do certificado. Verifique se o certificado foi emitido corretamente.
C400 Cadeia certificadora: ## é inválida. O certificado NÃO foi emitido pelo STS. Emita um certificado válido.
C500 Certificado expirado. Data de expiração: ## Emita um novo certificado caso ainda não tenha renovado.
C600 O Common Name (CN): ## do certificado é inválido Verifique se o CN do subject da geração do CSR é exatamente igual ao client_id e emita um novo certificado.
C700 O certificado ainda está válido. Renovação não permitida fora do prazo de 30 dias antes do vencimento. Utilize o certificado vigente.
C700a O certificado ainda está valido. A emissão de um novo não é permitida. Utilize o certificado vigente.
C800 O CSR (Certificate Sign Request) enviado é inválido. Verifique se o CSR está sendo enviado corretamente.
C800a O Common Name (CN): ## do CSR (Certificate Sign Request) enviado é inválido. Verifique se o CN do subject da geração do CSR é exatamente igual ao client_id e tente novamente.
C800b Limite de certificados excedido para o token atual. Solicite um novo token temporário.
C900 Erro ao revogar o certificado Entre em contato com o suporte.
C900a Erro ao revogar o certificado. Permissão negada. Verifique se o usuário tem permissão e tente novamente.
C900b Erro ao revogar certificado de Parceiro. Permissão negada. Entre em contato com o suporte.
C1000 Erro desconhecido durante emissão do certificado. Entre em contato com o suporte.

Dica

Para dúvidas que não forem esclarecidas por essa documentação, entre em contato conosco diretamente pelos canais de suporte combinados com o seu representante comercial Itaú.