2015-04-22 9 views
0

Я узнал, что у Java есть собственное хранилище сертификатов, которое находится в файле в папке безопасности внутри lib-папки.Как получить доступ к хранилищу сертификатов Java с Java?

Вы можете получить доступ к этому из панели управления Java -> Безопасность -> Управление сертификатами.

Но я хочу получить к ним доступ через Java-код. У кого-то есть информация об этом? Как сертификаты хранятся внутри файла сертификата? Есть ли встроенный способ Java для этой или официальной документации от Java/Oracle?

Спасибо!

ответ

0

Мы должны были использовать сертификаты через код для вызова API в определенные приложения. Мы не смогли установить сертификаты в контейнере кода по некоторым причинам. Поставщик услуг API дал нам .cer file.Apache HTTP клиент был использован для этой цели

Начните с первого создания файла ключей на основе и загрузить этот файл .cer на него

keytool -import -alias joe -file <path>/file.cer -keystore <keystoreName> -storepass <password> 

Затем добавьте сгенерированный файл хранилища в качестве ресурса в приложении и создать свой собственный HTTPClient для использования этого хранилища ключей

import org.apache.http.conn.ssl.SSLConnectionSocketFactory; 
import org.apache.http.conn.ssl.TrustSelfSignedStrategy; 
import org.apache.http.ssl.SSLContexts; 
import javax.net.ssl.SSLContext; 
import java.io.File; 
import org.apache.http.impl.client.CloseableHttpClient; 
import org.apache.http.impl.client.HttpClients; 

      File file = new File(getClass().getClassLoader().getResource(<pathTokeystoreFile>).getFile()); 
        SSLContext sslcontext = SSLContexts.custom() 

          .loadTrustMaterial(file, CERT_PASSWORD.toCharArray(), 
            new TrustSelfSignedStrategy()) 
          .build(); 
        SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
          sslcontext, 
          new String[]{"TLSv1", "SSLv3", "TLSv1.1", "TLSv1.2"}, 
          null, 
          SSLConnectionSocketFactory.getDefaultHostnameVerifier()); 


      CloseableHttpClient customClient; 
      customClient = HttpClients.custom() 
          .setSSLSocketFactory(sslConnectionSocketFactory) 
          .build(); 
       } 
Смежные вопросы