|
■No101788 (伝説のカレー さん) に返信
>>「KeyStoreが初期化されていません」なのでloadを行っていないからでしょうね >>パスワードを設定していないなら空文字列かnullでいんじゃないですかね
について、その通りでした。
最初の質問のソース中の KeyStore trustAnchors = (ここの記述がわかりません); の所をどう記述するのかという問題について、下記の様に記述したところ無事に記述できました!
不明部分を分離する為、上記部分を下記の様に関数にします。 KeyStore trustAnchors = makeTrustStore(certStorePath, rootCertFilename); 第二引数は、信頼されたルート証明書で certStorePath フォルダ上にあるとします。
関数の中身は下記です。 ------------- // トラストストアを読み込む public static KeyStore makeTrustStore( String certStorePath, String rootCertFilename) throws Exception { String tcFilePath = certStorePath+"\\"+rootCertFilename; Certificate rootCert = readX509Certificate(tcFilePath);
// キーストアを作成 KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); keyStore.load(null, null);
// TrustedCertificateEntry を使用して、信頼されたルート証明書をキーストアに設定する String anomName = "root"; // 別名; KeyStore.TrustedCertificateEntry tce = new KeyStore.TrustedCertificateEntry(rootCert); ; keyStore.setEntry(anomName, tce, null); // nullはパスワードなし return keyStore; }
// 証明書ファイルを読込 private static X509Certificate readX509Certificate( String certificateFilePath) throws IOException, CertificateException { FileInputStream fis = new FileInputStream(certificateFilePath); CertificateFactory cf = CertificateFactory.getInstance("X.509"); X509Certificate cert = (X509Certificate) cf.generateCertificate(fis); return cert; } -------------
最初の質問の趣旨である「記述がわからない」という問題は解決しましたので、解決済と致します。 実はこの状態でもエラーは出るのですが、上記をベースに手直しします。
GPT先生の助けもありますが、伝説のカレーさんとの今回のやりとりがヒントになったので解決に導く事ができました。 ありがとうございました。
|