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:


• PIX Indireto

• PISP

• Corban Digital

• Extrato (Account Statement)

• FX as a Service - Câmbio


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

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 o ambiente de homologação e produção, posteriomente, o fluxo da geração do certificado dinâmico.

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 Sign Request é um certificado não assinado e usado apenas no ambiente de produção, gerado pelo responsável técnico 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 Sign 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 é 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 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.

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 a passo para gerar o certificado dinâmico


Passo 9 - Gerar o Certificado Dinâmico.


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}}

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 18. 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 19. 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

como enviar o certificado dinâmico via 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 20. 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 21. 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 -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}}'

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(); } }

def sendCertificate(self, 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, cert=cert)

if STATUS_OK != response.status_code: response.raise_for_status()

crt = response.content.split("\n", 1)[1]) print(crt) except: raise Exception("Erro na geracao do certificado")

$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;

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;
FileCertificate = File.CreateText(
	@"C:\caminho_certificado\ARQUIVO_REQUEST_CERTIFICADO.crt"
);

StringReader stringReader = new StringReader(getRetorno());
var teste = response.Split(Environment.NewLine.ToCharArray());

foreach (var item in teste)
{
	if (item.Contains("Secret:"))
	{
		responseSecret = item;
	}
	else
	{
		FileCertificate.WriteLine(item);
	}
}

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(); } }

var requestResponse = (HttpWebResponse)request.GetResponse();

response = new StreamReader(requestResponse.GetResponseStream()).ReadToEnd();

StreamWriter FileCertificate;
FileCertificate = File.CreateText(
	@"C:\caminho_certificado\ARQUIVO_REQUEST_CERTIFICADO.crt"
);

StringReader stringReader = new StringReader(getRetorno());
var teste = response.Split(Environment.NewLine.ToCharArray());

foreach (var item in teste)
{
	if (item.Contains("Secret:"))
	{
		responseSecret = item;
	}
	else
	{
		FileCertificate.WriteLine(item);
	}
}

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 60 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ú.