Running on Debian with OpenJDK 1.8.0_171 yields the following exception:

java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at
com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389)
at
com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)
Caused by: java.security.KeyStoreException: Windows-ROOT not found
at java.security.KeyStore.getInstance(KeyStore.java:851)
at sample.Main.getRootCertificates(Main.java:73)
at sample.Main.main(Main.java:46)
... 11 more
Caused by: java.security.NoSuchAlgorithmException: Windows-ROOT KeyStore
not available
at sun.security.jca.GetInstance.getInstance(GetInstance.java:159)
at java.security.Security.getImpl(Security.java:695)
at java.security.KeyStore.getInstance(KeyStore.java:848)
... 13 more


The file lib/security/cacerts does exist (it's a symbolic link to
/etc/ssl/certs/java/cacerts at least on my setup)

On Sat, Oct 13, 2018 at 10:53 PM Tilman Hausherr <[email protected]>
wrote:

> Could somebody who is on linux  or uses openjdk test this code? I know
> it works on windows with oracle jdk but I'd like to know about others.
>
> I'd like to know whether it works on linux (is an
> InvalidAlgorithmParameterException trace getting printed or is a
> different exception being thrown?) or with openjdk (does the cacerts
> file exist?)
>
> If all is good, then the set returned is not empty.
>
> Tilman
>
>
>      private Set<X509Certificate> getRootCertificates()
>              throws GeneralSecurityException, IOException
>      {
>          Set<X509Certificate> rootCertificates = new HashSet<>();
>
>          // https://stackoverflow.com/questions/3508050/
>          String filename = System.getProperty("java.home") +
> "/lib/security/cacerts";
>          KeyStore keystore;
>          try (FileInputStream is = new FileInputStream(filename))
>          {
>              keystore = KeyStore.getInstance(KeyStore.getDefaultType());
>              keystore.load(is, null);
>          }
>          PKIXParameters params = new PKIXParameters(keystore);
>          for (TrustAnchor trustAnchor : params.getTrustAnchors())
>          {
>              rootCertificates.add(trustAnchor.getTrustedCert());
>          }
>
>          //
> https://www.oracle.com/technetwork/articles/javase/security-137537.html
>          try
>          {
>              keystore = KeyStore.getInstance("Windows-ROOT");
>              keystore.load(null, null);
>              params = new PKIXParameters(keystore);
>              for (TrustAnchor trustAnchor : params.getTrustAnchors())
>              {
> rootCertificates.add(trustAnchor.getTrustedCert());
>              }
>          }
>          catch (InvalidAlgorithmParameterException ex)
>          {
>              // not on windows
>
>              ex.printStackTrace();
>
>          }
>
>          return rootCertificates;
>      }
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

Reply via email to