java代码添加证书 jdk添加证书

如何用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"); }}

如何把安全证书导入到java中的cacerts证书库

导入根证书或者中级证书

keytool -import -trustcacerts -alias root -file geotrust.crt -keystore

导入CA签发的证书

keytool -import -trustcacerts -alias gworg -file -keystore

在java中使用安全证书的问题

在项目开发中,有时会遇到与SSL安全证书导入打交道的,如何把证书导入java中的cacerts证书库呢?

其实很简单,方法如下:

每一步:进入某个开头的网站,把要导入的证书下载过来,

在该网页上右键 属性 点击"证书"

再点击上面的"详细信息"切换栏

再点击右下角那个"复制到文件"的按钮

就会弹出一个证书导出的向导对话框,按提示一步一步完成就行了。

例如:保存为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

此时命令行会提示你输入cacerts证书库的密码,

你敲入changeit就行了,这是java中cacerts证书库的默认密码,

你自已也可以修改的。

导入后用-list查看(没有使用-alias指定别名,所以是mykey),其中md5会和证书的md5对应上。

mykey, 2012-10-26, trustedCertEntry,

认证指纹 (MD5): 8D:A2:89:9A:E4:17:07:0B:BD:B0:0C:36:11:39:D0:3D

ok,大功告成!

以后更新时,先删除原来的证书,然后导入新的证书

keytool -list -keystore cacerts

keytool -delete -alias akazam_email -keystore cacerts

keytool -import -alias akazam_email -file akazam_email.cer -keystore cacerts

自定义文件和密码路径,还没有验证:

Define the TrustStore using the JAVA_OPTS variable on the Stash Server:

You will have to do the following:

On Windows:

JAVA_OPTS = -Djavax.net.ssl.trustStore="%JAVA_HOME%\jre\lib\security\cacerts" -Djavax.net.ssl.trustStorePassword="changeit"

On Linux:

JAVA_OPTS = -Djavax.net.ssl.trustStore="$JAVA_HOME/jre/lib/security/cacerts" -Djavax.net.ssl.trustStorePassword="changeit"

(info) On my local instance trustStore password is changeit so I belive, if you didn´t changed it, your is changeit as well.

tomcat、junit运行时会从默认路径加载cacerts文件,如果main函数直接运行需要指定javax.net.ssl.trustStore文件路径,比如:

java -Djavax.net.ssl.trustStore=$JAVA_HOME/jre/lib/security/cacerts -jar XXX.jar

如何用java自带的工具生成证书

一、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


文章标题:java代码添加证书 jdk添加证书
当前地址:http://azwzsj.com/article/dosdsdj.html