特定のアプリケーションへの API 呼び出しを行うには、コードで証明書を使用する必要がありました。何らかの理由で、コード コンテナーに証明書をインストールできませんでした。API サービス プロバイダーから .cer ファイルが提供されました。この目的のために 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();
}