1
resposta

Como consumir um api rest em java passando certificados .pen e .key

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.

1 resposta

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!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.