灰熊设置的密钥库使用JKS在一个罐子里

我试图用com.sun.grizzly.SSLConfig.setKeyStoreFile()为灰熊设置SSL。 只需要一个字符串作为输入(不或的InputStream文件)。 我想用一个JKS文件,它是在一个JAR文件。 如果我通过一个字符串的JAR路径(例如C:\目录\ my.jar \资源\ my.jks),它失败。 除了刚才解压的JAR文件,我怎么可以使用JKS的灰熊。

--------------解决方案-------------

它不会出现你可以通过任何东西比一个文件名等。 如果您查看源代码,并期待在validateConfiguration()createSSLContext()方法,你会看到,它是传递keyStoreFile直接变量到FileInputStream的构造。

短期来看,你可能坚持与解压缩,并使用直接的文件名。 或者你可以重写上面列出正确的验证和初始化的SSL连接的两种方法。 长期来看,我提交了一个补丁。

@凯文的想法成功了! 利用灰熊-servlet的Web服务器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);
}
}
};

我花了几个快捷方式(不记录异常,使用多个字符串常量,等等),但你可以得到的想法。

分类:java的 时间:2012-01-01 人气:0
分享到:

相关文章

  • 在Java中SSL连接忽略“关于证书错误的名称”类型的错误 2012-04-03

    我试图建立与HTTPS URL连接,但是由于它仍然在测试中,URL重定向到测试环境,导致浏览器的消息大致说,证书是可信的,有效提示用户,但不匹配的域名,如果他们想继续. 我有一个很难与这在Java中处理. 所有我找到的答案建议使用这样的的TrustManager TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { public X509Certificate[] getAcceptedIssue

  • 一种直接的方法来打开自签署在Java中HTTPS的SSL网址吗? 2012-01-14

    我建设需要打开自签署在Java中HTTPS的SSL网址的应用程序. 我了解到,您可以通过添加到HttpsURLConnection.setDefaultHostnameVerifier()的调用,你说的主机名被允许什么绕过SSL的问题. 不过,我在我的服务器都运行自签名的证书第二个问题. 因此,即使主机名旁路我越来越像例外: javax.net.ssl​​.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径

  • 如何使用PEM文件创建Java中的SSL套接字? 2013-11-23

    请参阅相关的问题. 我有一个PEM文件提供给我,被告知,这将需要建立一个连接到C ++服务器由于某种API调用的SSL套接字. 有谁知道我怎么能在PEM文件中读取并连接? 我也给了parapharse密码. --------------解决方案------------- 这听起来像PEM文件是一个客户端证书供您使用登录到服务器. 如果是客户端证书,它听起来就像是,你可能会需要一个CA证书文件还到以建立连接验证服务器证书使用. 该CA证书需要进入一个信任存储和客户端证书需要进入一个密钥库中. 在J

  • 最简单的方法,通过在Java中的代理获取SSL页面 2012-02-24

    我想在Java中获取一个SSL页面. 现在的问题是,我必须验证对HTTP代理. 所以,我希望有一个简单的方法来读取这个页面. 我尝试了Apache Commons的HttpClient,但它的开销太大了我的问题. 我想这一段代码,但它不包含身份验证操作: import java.io.*; import java.net.*; public class ProxyTest { public static void main(String[] args) throws ClientProtocol

  • java的SSL:铬/火狐在HTTP头中发送的“G”,而不是“GET / HTTP / 1.1” 2012-09-25

    嗨,我尝试了一个简单的Java HTTP服务器NanoHTTPD:http://elonen.iki.fi/code/nanohttpd/ 今天我尝试用HTTPS来支持它,所以我创建SSLServerSocket在其NanoHTTPD构造函数: // myServerSocket = new ServerSocket(myTcpPort); myServerSocket = SSLServerSocketFactory.getDefault().createServerSocket(myTcpP

  • 在Java中的SSL超重 2013-01-31

    我使用org.apache.commons.ssl使Java中的SSL服务器. 我现在面临一个奇怪的问题:我送过来的SSL数据流的500KB,我收到客户端的数据500KB,但在TCP连接传输的数据是20倍. 可能是什么原因? 的SSL参数错误的配置? 我用我的测试中真正值得信赖的SSL证书. 我试图嗅出和解码使用Wireshark的SSL流,但它没有工作,我没能看到解码后的数据. 或者,也许流被编码在一个以上的传递? 在TCP数据包是每152​​5个字节. 没有什么不正常的,因为我可以看到. 如

  • 如何调用web服务通过SSL在Java中? 2014-05-25

    我最近一直在C#应用程序调用一个Web服务通过SSL并处理使用委托的ServerCertificateValidationCallback事件像这样的证书安全性: System.Net.ServicePointManager.ServerCertificateValidationCallback += delegate(object certsender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolic

  • 在Java中的SSL认证的服务器/客户端模式 2014-10-26

    我必须使用客户机/服务器架构和开放SSL认证的要求. 在这里,如何使用服务器的开放SSL证书知道连接客户端? 任何人都知道的链接,然后样品请回复me.We必须发展它在Java中. --------------解决方案------------- OpenSSL是不是Java,所以您的解决方案无法兼顾 - 但我想我知道是什么意. 通常情况下会使用OpenSSL作为的Apache HTTP的一部分了mod_ssl的一部分. 这反过来又使用"连接器"发送请求到应用服务器,例如Apache To

  • 获取网站内容生成SSL例外:在Java中Illegal_Parameter 2014-10-31

    我是新手到插座,为Web URL类和编程在Java中. 我想读一下我重定向到另一个网站的网站的内容. 问题是,我得到以下错误: Exception in thread "main" javax.net.ssl.SSLException: Received fatal alert: illegal_parameter at sun.security.ssl.Alerts.getSSLException(Alerts.java:208) at sun.security.ssl.Alerts

  • Java中使用来自罐类 2012-08-15

    这必须是一个超级overasked问题. 虽然这里有云: 我对周围的测试(hworld.java)一个java文件,并正尝试导入conio.jar,一个JAR是Conio的包装. 该JAR只包含一个类文件(conio.class)和META-INF. 尝试做import conio.*或import conio.conio显示我: C:\Documents and Settings\Nick\Desktop>javac -cp *.jar; hworld.java hworld.java:3:

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.524 (s). 10 q(s)