Precisava realizar uma integracao com o banco Cora, para autenticacão ele pede que seja enviado junto com nas requisições 2 arquivos: .pem e .key. Gostaria de um exemplo em java de como colocar essses 2 arquivos na solicitação da API.
Precisava realizar uma integracao com o banco Cora, para autenticacão ele pede que seja enviado junto com nas requisições 2 arquivos: .pem e .key. Gostaria de um exemplo em java de como colocar essses 2 arquivos na solicitação da API.
Olá, Fabiano! Como vai?
Para consumir uma API REST em Java passando certificados .pem
e .key
, você pode usar a biblioteca HttpClient do Apache. Primeiro, você precisará converter seus arquivos .pem
e .key
para um keystore do Java (JKS ou PKCS12). Você pode fazer isso com a ferramenta OpenSSL da seguinte maneira:
openssl pkcs12 -export -in cert.pem -inkey key.pem -out keystore.p12 -name "alias"
Em seguida, você pode usar o HttpClient para fazer a requisição:
KeyStore keyStore = KeyStore.getInstance("PKCS12");
FileInputStream instream = new FileInputStream(new File("caminho/para/seu/keystore.p12"));
try {
keyStore.load(instream, "sua_senha".toCharArray());
} finally {
instream.close();
}
SSLContext sslcontext = SSLContexts.custom()
.loadKeyMaterial(keyStore, "sua_senha".toCharArray())
.build();
CloseableHttpClient httpclient = HttpClients.custom()
.setSSLContext(sslcontext)
.build();
HttpGet httpget = new HttpGet("https://url.da.api");
CloseableHttpResponse response = httpclient.execute(httpget);
try {
System.out.println(response.getStatusLine());
HttpEntity entity = response.getEntity();
EntityUtils.consume(entity);
} finally {
response.close();
}
Lembre-se de substituir "caminho/para/seu/keystore.p12" pelo caminho real para o arquivo keystore, "sua_senha" pela senha que você usou para criar o keystore e "https://url.da.api" pela URL da API que você está tentando acessar. No mais, tente ajustar esse exemplo dentro do seu projeto, pode haver partes que podem apresentar inconsistências dependendo da estrutura do seu projeto.
Espero ter ajudado e bons estudos!