0
Windowsのリポジトリの証明書を使用してWebServiceに接続する際に問題があります。keystoretype "Windows-MY"を使用してjavax.net.ssl.keyStoreAliasが機能しない
問題は、Windowsは常にプロパティkeystoreAliasを無視してリポジトリの最初の証明書を取得することです。今はwathが間違っているのですか?
私はリポジトリに3つの証明書があり、私は3番目の証明書を使いたいと思いますが、ウィンドウは常に最初の証明書を選択します。
ks = KeyStore.getInstance("Windows-MY");
try {
ks.load(null, configNFSe.getSenhaCertificadoDigital().toCharArray());
} catch (IOException e) {
throw new Exception("Senha do Certificado Digital esta incorreta ou Certificado inválido.");
}
Enumeration<String> aliasEnum = ks.aliases();
while (aliasEnum.hasMoreElements()) {
String alias = aliasEnum.nextElement();
if (ks.isKeyEntry(alias)) {
String certificado = alias;
X509Certificate certificate = (X509Certificate) ks.getCertificate(alias);
if (certificate.getSubjectDN().toString().equals(configNFSe.getAliasCertificado()) || alias.equals(configNFSe.getAliasCertificado())) {
keyEntry = (KeyStore.PrivateKeyEntry) ks.getEntry(alias, new KeyStore.PasswordProtection(configNFSe.getSenhaCertificadoDigital().toCharArray()));
atualizarSenhaAliasCertificado(certificate);
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("com.sun.xml.ws.transport.http.client.HttpTransportPipe.dump", "true");
System.setProperty("com.sun.xml.ws.transport.http.HttpAdapter.dump", "true");
System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
System.clearProperty("javax.net.ssl.keyStore");
System.clearProperty("javax.net.ssl.keyStorePassword");
System.clearProperty("javax.net.ssl.trustStore");
System.clearProperty("javax.net.ssl.keyStoreAlias");
System.setProperty("javax.net.debug", "ssl");
System.setProperty("javax.net.ssl.keyStoreProvider", "SunMSCAPI");
System.setProperty("javax.net.ssl.keyStoreType", "Windows-MY");
System.setProperty("javax.net.ssl.keyStore", "cert_jf_p.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "passwordCertificate");
System.setProperty("javax.net.ssl.keyStoreAlias", alias);
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore","cert_jf_p.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
break;
}
}
}
ありがとう、しかし、私はどのように私のアプリケーションを使用するWindowsの証明書を言う、あなたは私を助けることができますか?方法はありますか? –