Tag: 证书

在Servlet中读取客户端证书

我在JBOSS中使用客户端服务器通信方案,在客户端( JAVA PROGRAM )中使用浏览器。 最初建立连接时,客户端将其证书发送到服务器。 服务器从证书中提取客户端的公钥,从而继续进行通信。 现在我的问题是 如何将证书(.cer)从客户端发送到服务器? 如何在服务器中接收证书并提取其公钥?

为JWS部署签署带有可信证书的jar文件

我开发了一个开源程序WPCleaner,它通过Java Web Start分发。 当前版本可从http://site4145.mutu.sivit.org/WikiCleaner/WikiCleaner.jnlp获取 随着Java的最新更新,当您需要应用程序具有一些权限(写入首选项,访问其他网站,……)时,通过Java Web Start部署Java应用程序变得越来越困难。 我的应用程序是自签名的,之前还可以,但是新的更新要求用户在每次运行时都接受应用程序,而不仅仅是一次性,如果他们愿意的话。 所以,我决定使用可信证书来签署我的申请。 我从Certum得到了一个(显然,他们对开源开发人员是免费的),继这个讨论之后: 开源项目的代码签名证书? 我已经生成了一个新的jar文件,使用此证书签名(jar文件可从http://site4145.mutu.sivit.org/WikiCleaner/WikipediaCleanerTest.jar获得 ),但我仍有问题:当我通过JWS启动应用程序时,Java仍然会显示一个警告窗口,让我一劳永逸地信任该应用程序。 编辑器仍然显示为UNKNOWN,但是当我查看消息的详细信息时,这是我从Centrum使用的新证书。 有没有人知道我做错了什么? 我认为拥有来自可信CA的证书(Centrum似乎是在Java cacerts中)将允许用户一劳永逸地接受证书。 谢谢 PS:当我运行jarsigner -verify ,我收到以下警告“此jar包含其证书链未经过validation的条目。”

使用Java和Bouncycastle进行X.509证书validation

通过bouncycastle wiki页面,我能够理解如何创建X.509根证书和认证请求,但我不太明白如何在此之后继续进行概念和编程。 让我们假设甲方做了一个证书请求,并从CA获得了他的客户证书。 某些乙方如何validationA的证书? A需要什么样的证书? 根证书? “普通”客户证书? 如果我们假设A已成功将他的证书以DER或PEM格式发送给B,那么validation如何在编程级别上工作? 任何帮助深表感谢。 最诚挚的问候,Rob

从applet安全警告中删除“UNKNOWN”发布者

我正在尝试签署一个小程序,以便发布者不会显示为“ 未知 ”: 我在一个组织工作,我们有自己的证书颁发机构 , 证书链如下: ORG Root CA> ORG Trusted Certification Authority> Yann39(me:D) 我申请了证书,他们为我提供了一个链接,让它进入浏览器。 然后我导出它(从Firefox)以获取名为mystore.p12的PKCS#12文件。 然后我做了以下签名我的applet : /* TO KNOW THE ALIAS */ c:\testrep>keytool -list -storetype pkcs12 -keystore mystore.p12 Enter keystore password: ******** Keystore type: pkcs12 Keystore provider: SunJSSE Your keystore contains 1 entry id de yann39, Oct 24, 2012, keyEntry, Certificate fingerprint (MD5): […]

使用Java读取X.509证书

我正在尝试使用Java来读取我从外部方收到的证书。 代码抛出以下错误: java.lang.RuntimeException:java.security.cert.CertificateException:无法初始化,java.io.IOException:提供给DerValue构造函数的额外数据 代码: FileInputStream ksfis = new FileInputStream(this.getCertificateFile()); ksbufin = new BufferedInputStream(ksfis); certificate = (X509Certificate) CertificateFactory.getInstance(“X.509”).generateCertificate(ksbufin); 为了确保问题不在代码中,我创建了一个自签名证书并将其与代码一起使用,并且工作正常。 我在系统密钥链中安装了两个证书,它们都是有效的。 我使用的是Mac和Java 1.6。 在加载外部Party证书时,我知道为什么会出现上述exception? 你认为它在转移过程中被破坏了吗? 如果确实如此,它不应该在本地系统上显示为有效,对吧?

PKIX路径构建在Java应用程序中失败

在将我的应用程序从Windows 2000移动到Windows 2008 R2 Server之后,我一直在努力让我的应用程序运行近一周。 步骤: 已安装Java JDK 1.7.0_25 将系统环境变量JAVA_HOME为C:\Progra~1\Java\jdk1.7.0_25\ 使用keytool将证书导入cacerts 确保证书存在于keytool with -list 。 我试图用InstallCert重复第3步 ,以确保我没有弄乱任何东西。 上面的方法没有解决我的问题,所以我尝试以编程方式进行: System.setProperty(“javax.net.ssl.trustStore”, “C:/Progra~1/Java/jdk1.7.0_25/jre/lib/security/cacerts”); System.setProperty(“javax.net.ssl.trustStorePassword”, “changeit”); 仍然没有任何运气。 我被卡住了,不太确定从这里走哪个方向。 堆栈跟踪: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1886) at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276) at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:270) at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1341) at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:153) at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868) […]

我们可以在密钥库中加载多个证书和密钥吗?

我们可以在密钥库中加载多个证书和密钥吗? 是否始终只需要加载对(即证书和密钥)? 如果密钥库具有多个证书和密钥,当Java SSL尝试将连接建立为服务器时,将选择哪个证书和密钥?

使用BouncyCastle API生成CSR

我是Java的安全方面的新手,偶然发现了这个名为bouncycastle的库。 但他们提供的例子和互联网上的例子要求使用 – return new PKCS10CertificationRequest(“SHA256withRSA”, new X500Principal( “CN=Requested Test Certificate”), pair.getPublic(), null, pair.getPrivate() 但是当我使用PKCS10CertificationRequest时,看起来它已被弃用。 所以我开始研究另一种使用CertificationRequest类的方法。 但我真的很困惑,构造函数不采用相同的参数,而是需要CertificationRequestInfo类,我不知道如何填写。 CertificationRequest request = new CertificationRequest(…); 如果有人可以帮我弄清楚如何制作CSR以便我可以将其发送到服务器以获得签名,那将是非常棒的。 谢谢,

如何为Java服务器提供多个SSL证书

我有一个用Java编写的内部HTTP服务器; 完整的源代码供我使用。 HTTP服务器可以配置任意数量的网站,每个网站都有一个单独的监听套接字创建: skt=SSLServerSocketFactory.getDefault().createServerSocket(prt,bcklog,adr); 使用使用Java keytool创建的标准密钥库,我不能在我的生活中找出如何获得与不同侦听套接字关联的不同证书,以便每个配置的网站都拥有自己的证书。 我现在正处于这种状态,因此一些代码示例将非常受欢迎。 但是我很欣赏JSSE如何在这方面联系起来的任何好的概述(我已经搜索了Sun的JSSE doco,直到我的大脑疼痛(从字面上看;尽管它可能与咖啡因戒断一样多))。 编辑 有没有简单的方法来使用别名将密钥存储区中的服务器证书与侦听套接字相关联? 以便: 客户有一个密钥库来管理所有证书,以及 没有必要摆弄多个钥匙店等。 我得到的印象(今天下午早些时候)我可以写一个简单的KeyManager,只有chooseServerAlias(…)返回非null,这是我想要的别名的名字 – 任何人都chooseServerAlias(…)条推理线有任何想法? 解 我使用的解决方案是根据slyvarking的回答构建的, 它创建了一个临时密钥库,并使用从单个外部密钥库中提取的所需密钥/证书填充它。 对于任何感兴趣的人(svrctfals是我的“服务器证书别名”值),代码如下: SSLServerSocketFactory ssf; // server socket factory SSLServerSocket skt; // server socket // LOAD EXTERNAL KEY STORE KeyStore mstkst; try { String kstfil=GlobalSettings.getString(“javax.net.ssl.keyStore” ,System.getProperty(“javax.net.ssl.keyStore” ,””)); String ksttyp=GlobalSettings.getString(“javax.net.ssl.keyStoreType” ,System.getProperty(“javax.net.ssl.keyStoreType” ,”jks”)); char[] kstpwd=GlobalSettings.getString(“javax.net.ssl.keyStorePassword”,System.getProperty(“javax.net.ssl.keyStorePassword”,””)).toCharArray(); mstkst=KeyStore.getInstance(ksttyp); mstkst.load(new FileInputStream(kstfil),kstpwd); } […]

如何将证书链添加到密钥库?

我有证书链的文件 – certificate.cer: subject=/C… issuer=/C=US/O=VeriSign, Inc… —–BEGIN CERTIFICATE—– … —–END CERTIFICATE—– subject=/C=US/O=VeriSign, Inc… issuer=/C=US/O=VeriSign, Inc… —–BEGIN CERTIFICATE—– … —–END CERTIFICATE—– subject=/C=US/O=VeriSign, Inc… issuer=/C=US/O=VeriSign, Inc… —–BEGIN CERTIFICATE—– … —–END CERTIFICATE—– 我需要将这个证书链添加到密钥库。 我做的事: openssl x509 -outform der -in certificate.cer -out cert.der keytool -v -importcert -alias mykey -file cert.der -keypass -keystore keystore -storepass -alias 结果我在密钥库中只有1个证书。 但应该有3。 可能有什么不对? 解: […]