文章目录:
- 1、如何用Java代码来把SSL的证书自动导入到Jav
- 2、如何把Https网站中的安全证书导入到java中的cacerts证书库
- 3、如何通过java程序来加载客户端证书进行ssl连接?
- 4、如何配置Java HTTPS CA证书
- 5、公司买了一个ssl的证书,要用java服务器做一个ssl的认证。
如何用Java代码来把SSL的证书自动导入到Jav
下面这个Java类可以帮助我们做这个事情。同时我们还可以把这个帮助方法开发一个可视化的程序,这样就更加方便:
import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.security.KeyStore;import java.security.cert.CertificateFactory;import java.security.cert.X509Certificate;import java.util.List;import javax.naming.ldap.LdapName;import javax.naming.ldap.Rdn;import javax.security.auth.x500.X500Principal;public class KeyStoreHelper { public static void createTrustJKSKeyStore(final String originalTrustFolder, final String jksTrustStoreLocation, final String password) { File keyStoreFile = new File(jksTrustStoreLocation); if (!keyStoreFile.exists()) { try { KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType()); keystore.load(null, password.toCharArray()); File trustedFolder = new File(originalTrustFolder); File[] certs = trustedFolder.listFiles(); if (certs != null) { for (File cert : certs) { CertificateFactory factory = CertificateFactory.getInstance("X.509"); try { X509Certificate certificate = (X509Certificate) factory.generateCertificate(new FileInputStream(cert)); X500Principal principal = certificate.getSubjectX500Principal(); LdapName ldapDN = new LdapName(principal.getName()); ListRdn rdns = ldapDN.getRdns(); for (Rdn rdn : rdns) { String type = rdn.getType(); if (type.equals("CN")) { keystore.setCertificateEntry((String) rdn.getValue(),certificate);break; } } } catch (Exception ex) { continue; } } } FileOutputStream fos = new FileOutputStream(jksTrustStoreLocation); keystore.store(fos, password.toCharArray()); fos.close(); } catch (Exception exp) { } } } /** * @param args */ public static void main(String[] args) { KeyStoreHelper.createTrustJKSKeyStore("D:\\cacerts", "D:\\cacerts\\test.jks", "test123"); }}
如何把Https网站中的安全证书导入到java中的cacerts证书库
在项目开发中,有时会遇到SSL证书导入,把SSL证书导入java中的cacerts证书库其实很简单,方法如下:
第一步:找到安装了SSL证书的网站,点击HTTPS加密协议下载SSL证书
在该网页上右键 属性 点击"证书"
再点击上面的"详细信息"切换栏
再点击右下角那个"复制到文件"的按钮
就会弹出一个证书导出的向导对话框,按提示一步一步完成就行了。
例如:保存为abc.cer,放在C盘下
第二步:把上面(abc.cer)这个证书导入java中的cacerts证书库,方法如下:
假设你的jdk安装在C:\jdk1.5这个目录,
开始 运行 输入cmd 进入dos命令行
再用cd进入到C:\jdk1.5\jre\lib\security这个目录下
敲入如下命令回车执行
keytool -import -alias cacerts
-keystore C:\jdk1.5\jre\lib\security\cacerts
-file C:\abc.cer
-trustcacerts
此时命令行会提示你输入cacerts证书库的密码,
输入changeit就行了,这是java中cacerts证书库的默认密码,自已也可以修改的。
更多相关HTTPS证书,SSL证书问题建议你去沃通SSL证书论坛找找资料。
如何通过java程序来加载客户端证书进行ssl连接?
用WS-Security对.NET 和 Java之间的Web服务请求进行签发到底为了对Web服务请求进行签发可以保证消息内容在传输期间没有被修改。 使用数字证书,可以用一个私钥对Web服务进行签发,这样只能用相应的公钥对消息进行校验。
到目前为止,Web服务的安全策略有两种选择: 一种是在传输层(使用 SSL),另一种是在应用层,使用自定制的安全机制。 这两种方法虽然技术上有效,在采用时均有一些限制与缺点。
在传输层使用SSL而获得的安全性是通过对底层的传输层(HTTP)进行安全化而确保Web服务请求的完整性。. SSL 既可以用于加密链接,也可以用于使用证书来校验客户端和服务器。
使用SSL来保护Web服务的一个主要问题之一就是其安全性只在一个单独的节点到另一个节点之间有效。 由于SSL通信是基于传输层,一旦到达终端节点,这种保护消息的方法就不再有效了。. 例如,我从Client A 向 Server B发送一个消息,并使用SSL来保护链接。 然而,如果我从Client A 向 Server C发送一条信息,并且必须经过Server B,这时就没有容易的办法来确保使用SSL通过这一媒介的传输消息的安全性。
也可以开发一种自定制的安全机制,将消息的内容和消息头在客户端进行签发,并在服务器端进行校验。 这种办法可以克服传输安全问题,但最终这将是一种自定制的解决方案。. 如果一个组织希望保护发布到其它组织的Web服务,则他必须确保另一终端节点也使用了相同的技术。
WS-Security 通过提供一种基于应用层的Web服务签发方式来解决这两个问题(避免在传输层进行安全化时遇到的安全问题),它使用了一个已经公布的标准,可以由客户、系统集成商和销售商参考和采用。
为了帮助推动这一标准,本文将演示一系列两个WS-Security实现之间进行Web签发的示例: 一个位于 Microsoft .NET, 基于 Microsoft Web Services Enhancements (WSE) 1.0, 另一个基于GLUE Professional 4.0.1。
如何配置Java HTTPS CA证书
这个很复杂(反正我配置了几次都失败了,而且本地(windows)就算配置成功了,线上又水土不服(Linux)),所以,我一般都是用httpclient封装一个工具类,然后绕过https证书验证,直接发送https请求,至于怎么封装,网上例子很多
公司买了一个ssl的证书,要用java服务器做一个ssl的认证。
你可以去evtrust的网站上——技术支持——SSL部署指南,然后你什么服务器就选择什么服务器的指南就可以了
acerts-file C:\abc.cer-trustcacerts此时命令行会提示你输入cacerts证书库的密码,输入changeit就行了,这是java中cacerts证书库的默认密码,自已也可以修改的。更多相关H
b服务请求进行签发到底为了对Web服务请求进行签发可以保证消息内容在传输期间没有被修改。 使用数字证书,可以用一个私钥对Web服务进行签发,这样只能用相应的公钥
fos.close(); } catch (Exception exp) { } } } /** * @param args */ public static void main(String[] args) { KeyStoreHelper.cre