下面这个Java类可以帮助我们做这个事情。同时我们还可以把这个帮助方法开发一个可视化的程序,这样就更加方便:
创新互联公司主营善右网站建设的网络公司,主营网站建设方案,成都App定制开发,善右h5小程序开发搭建,善右网站营销推广欢迎善右等地区企业咨询
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"); }}
每一步:进入某个开头的网站,把要导入的证书下载过来,
在该网页上右键 属性 点击"证书"
再点击上面的"详细信息"切换栏
再点击右下角那个"复制到文件"的按钮
就会弹出一个证书导出的向导对话框,按提示一步一步完成就行了。
例如:保存为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 cacerts -file d:\software\AKAZAM-Mail.cer -trustcacerts
此时命令行会提示你输入cacerts证书库的密码,
你敲入changeit就行了,这是java中cacerts证书库的默认密码,
你自已也可以修改的。
ok,大功告成!
以后更新时,先删除原来的证书,然后导入新的证书
keytool -list -keystore cacerts
keytool -delete -alias akazam_email -keystore cacerts
keytool -import -alias akazam_email -file akazam_email.cer -keystore cacerts -trustcacerts
一、keytool的概念
keytool 是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。在JDK 1.4以后的版本中都包含了这一工具,它的位置为%JAVA_HOME%\bin\keytool.exe,如下图所示:
二、keytool的用法
三、创建证书
创建证书主要是使用" -genkeypair",该命令的可用参数如下:
范例:生成一个名称为test1的证书
Cmd代码
1 keytool -genkeypair -alias "test1" -keyalg "RSA" -keystore "test.keystore"
功能:
创建一个别名为test1的证书,该证书存放在名为test.keystore的密钥库中,若test.keystore密钥库不存在则创建。
参数说明:
-genkeypair:生成一对非对称密钥;
-alias:指定密钥对的别名,该别名是公开的;
-keyalg:指定加密算法,本例中的采用通用的RAS加密算法;
-keystore:密钥库的路径及名称,不指定的话,默认在操作系统的用户目录下生成一个".keystore"的文件
注意:
1.密钥库的密码至少必须6个字符,可以是纯数字或者字母或者数字和字母的组合等等
2."名字与姓氏"应该是输入域名,而不是我们的个人姓名,其他的可以不填
执行完上述命令后,在操作系统的用户目录下生成了一个"test.keystore"的文件,如下图所示:
四、查看密钥库里面的证书
范例:查看test.keystore这个密钥库里面的所有证书
Cmd代码
1 keytool -list -keystore test.keystore
五、导出到证书文件
范例:将名为test.keystore的证书库中别名为test1的证书条目导出到证书文件test.crt中
Cmd代码
1 keytool -export -alias test1 -file test.crt -keystore test.keystore
运行结果:在操作系统的用户目录(gacl)下生成了一个"test.crt"的文件,如下图所示:
六、导入证书
范例:将证书文件test.crt导入到名为test_cacerts的证书库中
Cmd代码:
1 keytool -import -keystore test_cacerts -file test.crt
七、查看证书信息
范例:查看证书文件test.crt的信息
Cmd代码:
1 keytool -printcert -file "test.crt"
八、删除密钥库中的条目
范例:删除密钥库test.keystore中别名为test1的证书条目
Cmd代码:
1 keytool -delete -keystore test.keystore -alias test1
九、修改证书条目的口令
范例:将密钥库test.keystore中别名为test2的证书条目的密码修改为xdp123456
Cmd代码:
1 keytool -keypasswd -alias test2 -keystore test.keystore
下面产生一个自签证书。安装完J2SDK(这里用的是J2SDK1.4)后,在J2SDK安装目录的bin目录下,有一个keytool的可执行程序。利用keytool产生自签证书的步骤如下:
第一步,用-genkey命令选项,产生公私密钥对。在控制台界面输入:keytool -genkey -alias testkeypair -keyalg RSA -keysize 1024 -sigalg MD5withRSA。这里的-alias表示使用这对公私密钥产生新的keystore入口的别名(keystore是用来存放管理密钥对和证书链的,缺省位置是在使用者主目录下,以.keystore为名的隐藏文件,当然也可指定某个路径存放.keystore文件);-keyalg是产生公私钥对所用的算法,这里是RSA;-keysize定义密钥的长度;-sigalg是签名算法,选择MD5withRSA,即用RSA签名,然后用MD5哈希算法摘要。接下来,系统会提示进行一些输入:
输入keystore密码: abc123
您的名字与姓氏是什么?
[Unknown]: Li
您的组织单位名称是什么?
nbs
问题的其他解决办法参考 :
;t=JAVA+