title: "Invalid keystore format" on setting keystore for type "JCEKS" for symmetric key encryption
body: <p>I am trying to use symmetric encryption for securing the communication on jetty-9 using java-8.
  The cipher suite for this purpose I am using is "TLS_PSK_WITH_AES_128_GCM_SHA256". The implementation for this cipher suite is provided by third party provider - "IAIK".</p>
  
  <p>Since its symmetric encryption, the keystore type I am using is "JCEKS" and not default i.e. "JKS".</p>
  
  <p>On trying to configure this keystore, I am getting this error - java.io.IOException: Invalid keystore format.</p>
  
  <p>The program code is as follows:</p>
  
  <pre><code>import iaik.security.provider.IAIK;
  
  import java.io.IOException;
  import java.security.Security;
  
  import javax.servlet.ServletException;
  import javax.servlet.http.HttpServlet;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  
  import org.eclipse.jetty.server.Connector;
  import org.eclipse.jetty.server.HttpConfiguration;
  import org.eclipse.jetty.server.HttpConnectionFactory;
  import org.eclipse.jetty.server.SecureRequestCustomizer;
  import org.eclipse.jetty.server.Server;
  import org.eclipse.jetty.server.ServerConnector;
  import org.eclipse.jetty.server.SslConnectionFactory;
  import org.eclipse.jetty.servlet.ServletHandler;
  import org.eclipse.jetty.util.ssl.SslContextFactory;
  
  public class TestJettyServer {
  
    public static void main(String[] args) throws Exception {
      SslContextFactory sslContextFactory = new SslContextFactory();
      sslContextFactory.setIncludeProtocols(new String[] { "TLSv1" });
      Security.addProvider(new IAIK()); // third party provider for cipher suite "TLS_PSK_WITH_AES_128_GCM_SHA256"
      sslContextFactory.setIncludeCipherSuites(new String[] { "TLS_PSK_WITH_AES_128_GCM_SHA256" });
  
      attachSymmetricKeyStore(sslContextFactory);
  
      HttpConfiguration https = new HttpConfiguration();
      https.addCustomizer(new SecureRequestCustomizer());
  
      Server server = new Server();
  
      ServerConnector sslConnector = new ServerConnector(server, new SslConnectionFactory(sslContextFactory, "http/1.1"),
          new HttpConnectionFactory(https));
  
      sslConnector.setPort(9997);
  
      Connector[] connectors = { sslConnector };
      server.setConnectors(connectors);
  
      ServletHandler handler = new ServletHandler();
      server.setHandler(handler);
      handler.addServletWithMapping(HelloServlet.class, "/*");
  
      server.start();
      server.join();
  
    }
  
    private static void attachSymmetricKeyStore(SslContextFactory sslContextFactory) {
      // keystore is generated using following command :
      // keytool -genseckey -alias srccodes -keyalg AES -keystore keystoreAES.jceks -keysize 256 -storeType JCEKS
  
      sslContextFactory.setKeyStorePath(MinimalServlets.class.getResource("/keystoreAES.jceks").toExternalForm());
      sslContextFactory.setKeyStorePassword("123456");
      sslContextFactory.setKeyManagerPassword("123456");
    }
  
    public static class HelloServlet extends HttpServlet {
  
      /** The serialVersionUID. */
      private static final long serialVersionUID = 1L;
  
      @Override
      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        response.setStatus(HttpServletResponse.SC_OK);
        response.getWriter().println("&lt;h1&gt;Hello SimpleServlet&lt;/h1&gt;");
      }
    }
  
  }
  </code></pre>
  
  <p>The trace is as follows:</p>
  
  <pre><code>2014-12-17 19:59:56.506:INFO:oejs.Server:main: jetty-9.2.1.v20140609
  2014-12-17 19:59:56.539:WARN:oejuc.AbstractLifeCycle:main: FAILED SslContextFactory@12bb4df8(file:/D:/RA_Workspace/JettyWithCipherSuites/bin/keystoreAES.jceks,file:/D:/RA_Workspace/JettyWithCipherSuites/bin/keystoreAES.jceks): java.io.IOException: Invalid keystore format
  java.io.IOException: Invalid keystore format
  at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:650)
  at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:55)
  at java.security.KeyStore.load(KeyStore.java:1433)
  at org.eclipse.jetty.util.security.CertificateUtils.getKeyStore(CertificateUtils.java:55)
  at org.eclipse.jetty.util.ssl.SslContextFactory.loadKeyStore(SslContextFactory.java:864)
  at org.eclipse.jetty.util.ssl.SslContextFactory.doStart(SslContextFactory.java:270)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
  at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
  at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
  at org.eclipse.jetty.server.SslConnectionFactory.doStart(SslConnectionFactory.java:64)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
  at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
  at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
  at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:260)
  at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:81)
  at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:218)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
  at org.eclipse.jetty.server.Server.doStart(Server.java:336)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
  at TestJettyServer.main(TestJettyServer.java:48)
  2014-12-17 19:59:56.539:WARN:oejuc.AbstractLifeCycle:main: FAILED SslConnectionFactory@4cc77c2e{SSL-http/1.1}: java.io.IOException: Invalid keystore format
  java.io.IOException: Invalid keystore format
  at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:650)
  at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:55)
  at java.security.KeyStore.load(KeyStore.java:1433)
  at org.eclipse.jetty.util.security.CertificateUtils.getKeyStore(CertificateUtils.java:55)
  at org.eclipse.jetty.util.ssl.SslContextFactory.loadKeyStore(SslContextFactory.java:864)
  at org.eclipse.jetty.util.ssl.SslContextFactory.doStart(SslContextFactory.java:270)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
  at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
  at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
  at org.eclipse.jetty.server.SslConnectionFactory.doStart(SslConnectionFactory.java:64)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
  at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
  at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
  at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:260)
  at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:81)
  at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:218)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
  at org.eclipse.jetty.server.Server.doStart(Server.java:336)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
  at TestJettyServer.main(TestJettyServer.java:48)
  2014-12-17 19:59:56.539:WARN:oejuc.AbstractLifeCycle:main: FAILED ServerConnector@7a7b0070{SSL-http/1.1}{0.0.0.0:9997}: java.io.IOException: Invalid keystore format
  java.io.IOException: Invalid keystore format
  at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:650)
  at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:55)
  at java.security.KeyStore.load(KeyStore.java:1433)
  at org.eclipse.jetty.util.security.CertificateUtils.getKeyStore(CertificateUtils.java:55)
  at org.eclipse.jetty.util.ssl.SslContextFactory.loadKeyStore(SslContextFactory.java:864)
  at org.eclipse.jetty.util.ssl.SslContextFactory.doStart(SslContextFactory.java:270)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
  at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
  at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
  at org.eclipse.jetty.server.SslConnectionFactory.doStart(SslConnectionFactory.java:64)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
  at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
  at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
  at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:260)
  at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:81)
  at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:218)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
  at org.eclipse.jetty.server.Server.doStart(Server.java:336)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
  at TestJettyServer.main(TestJettyServer.java:48)
  2014-12-17 19:59:56.539:WARN:oejuc.AbstractLifeCycle:main: FAILED org.eclipse.jetty.server.Server@39a054a5: java.io.IOException: Invalid keystore format
  java.io.IOException: Invalid keystore format
  at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:650)
  at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:55)
  at java.security.KeyStore.load(KeyStore.java:1433)
  at org.eclipse.jetty.util.security.CertificateUtils.getKeyStore(CertificateUtils.java:55)
  at org.eclipse.jetty.util.ssl.SslContextFactory.loadKeyStore(SslContextFactory.java:864)
  at org.eclipse.jetty.util.ssl.SslContextFactory.doStart(SslContextFactory.java:270)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
  at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
  at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
  at org.eclipse.jetty.server.SslConnectionFactory.doStart(SslConnectionFactory.java:64)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
  at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
  at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
  at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:260)
  at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:81)
  at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:218)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
  at org.eclipse.jetty.server.Server.doStart(Server.java:336)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
  at TestJettyServer.main(TestJettyServer.java:48)
  Exception in thread "main" java.io.IOException: Invalid keystore format
  at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:650)
  at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:55)
  at java.security.KeyStore.load(KeyStore.java:1433)
  at org.eclipse.jetty.util.security.CertificateUtils.getKeyStore(CertificateUtils.java:55)
  at org.eclipse.jetty.util.ssl.SslContextFactory.loadKeyStore(SslContextFactory.java:864)
  at org.eclipse.jetty.util.ssl.SslContextFactory.doStart(SslContextFactory.java:270)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
  at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
  at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
  at org.eclipse.jetty.server.SslConnectionFactory.doStart(SslConnectionFactory.java:64)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
  at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
  at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
  at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:260)
  at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:81)
  at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:218)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
  at org.eclipse.jetty.server.Server.doStart(Server.java:336)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
  at TestJettyServer.main(TestJettyServer.java:48)
  </code></pre>
  
  <p>How can I get rid of this error?</p>