1

Javaには、lib-folder内のsecurity-folder内のファイルにある独自の「証明書ストア」があることがわかりました。

これには、Java コントロール パネル -> セキュリティ -> 証明書の管理からアクセスできます。

しかし、私は Java-Code 経由でそれらにアクセスしたいと考えています。誰かがこれについて何らかの情報を持っていますか? 証明書は証明書ファイル内にどのように保存されますか? これまたはJava / Oracleの公式ドキュメントにJava組み込みの方法はありますか?

ありがとう!

4

2 に答える 2

2

特定のアプリケーションへの 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();
                }
于 2017-01-09T15:18:38.010 に答える