【问题标题】:Setting Grizzly's keystore to use a jks in a jar将 Grizzly 的密钥库设置为在 jar 中使用 jks
【发布时间】:2010-01-20 20:01:27
【问题描述】:

我正在尝试使用 com.sun.grizzly.SSLConfig.setKeyStoreFile() 为 Grizzly 设置 SSL。它只需要一个字符串作为输入(不是 InputStream 或 File)。我想使用 JAR 文件中的 jks 文件。如果我为 jar 路径传递一个字符串(例如 C:\dir\my.jar!\resources\my.jks),它会失败。除了从 JAR 中解压缩文件之外,我如何将 JKS 用于 grizzly。

【问题讨论】:

    标签: java ssl jar jks grizzly


    【解决方案1】:

    您似乎不能传入文件名以外的任何内容。如果您查看source 并查看validateConfiguration()createSSLContext() 方法,您会看到它正在将keyStoreFile 变量直接传递给FileInputStream 构造函数。

    短期而言,您可能会被解压缩和使用直接文件名所困扰。或者您可以覆盖上面列出的两种方法来正确验证和初始化 SSLContext。长期来看,我会提交一个补丁。

    【讨论】:

      【解决方案2】:

      @Kevin 的想法奏效了!使用 grizzly-servlet-webserver 1.9.8,这是我的代码:

      
      SSLConfig ssl = new SSLConfig(){
       @Override
       public SSLContext createSSLContext() { 
        try{
         //Load the keystore.
         KeyStore keyStore=KeyStore.getInstance(KeyStore.getDefaultType());
         InputStream keyStream=ClassLoader.getSystemResourceAsStream("my.jks");
         //InputStream keyStream=new java.net.URL("jar:file:/C:/dir/my.jar!/my.jks").openStream();
         keyStore.load(keyStream,"mypassword");
         keyStream.close();
      
         //Create the factory from the keystore.
         String kmfAlgorithm=System.getProperty("ssl.KeyManagerFactory.algorithm",KeyManagerFactory.getDefaultAlgorithm());
         KeyManagerFactory keyManagerFactory=KeyManagerFactory.getInstance(kmfAlgorithm);
         keyManagerFactory.init(keyStore,"mypassword");
      
         //Create the SSLContext
         SSLContext sslContext=SSLContext.getInstance("TLS");
         sslContext.init(keyManagerFactory.getKeyManagers(), null, null);
         return sslContext;
        }
      
        //Wrap all Exceptions in a RuntimeException.
        catch(Exception e){
         throw new RuntimeException(e);
        }
       }
      };
      

      我采用了一些捷径(不记录异常,使用多个字符串常量等),但您可以理解。

      【讨论】:

        猜你喜欢
        • 2014-10-13
        • 2017-07-23
        • 2018-03-29
        • 1970-01-01
        • 2014-11-20
        • 2013-04-12
        • 2011-01-29
        • 2011-11-23
        • 2016-09-02
        相关资源
        最近更新 更多