java 数字证书 密钥库_java-密钥库和证书概念

在对密钥库和证书进行了一些研究之后,我发现了以下指南:

如果我错了,请纠正我.据我了解(和测试):

>在cmd中使用“ keytool -genkeypair -alias testingkeypair -keyalg RSA -keystore keystore.jks”将生成一个keystore.jks文件,该文件包含别名为“ domain”的私钥和公钥对

>然后将keystore.jks文件用于签名/导出证书

> keystore.jks文件也可以用于存储多个证书

我不明白的是,在将任何证书导入keystore.jks文件之前,当我尝试查看其中的内容(使用keytool -list -v -keystore keystore.jks)时,似乎存在一个证书已经在里面了它是该密钥库的默认证书吗?我以为“ keytool -genkeypair”将只生成带有密钥对的密钥库?

keytool -list -v -keystore keystore.jks的结果:

Keystore type: JKS Keystore provider: SUN

Your keystore contains 1 entry

Alias name: testingkeypair Creation date: Jan 11, 2016 Entry type:

PrivateKeyEntry Certificate chain length: 1 Certificate:

Owner:CN=testing, OU=testing, O=testing, L=testing, ST=testing,

C=testing Issuer: CN=testing, OU=testing, O=testing, L=testing,

ST=testing, C=testing Serial number: 650d8951 Valid from: Mon Jan 11

14:43:52 SGT 2016 until: Sun Apr 10 14:43:52 SGT 2016 Certificate

fingerprints:

MD5: F0:74:9F:27:F0:08:AB:A0:BE:B2:A0:F2:94:45:94:90

SHA1: 87:0C:E2:E2:06:A6:52:4E:0C:40:E9:B0:DE:75:A7:8C:CC:01:45:57

SHA256: D1:B2:63:F0:85:A7:06:2E:7D:2B:E1:1E:91:9E:62:56:22:E7:61:36:E6:

23:8A:6F:21:EF:2B:79:0D:12:B8:38

Signature algorithm name: SHA256withRSA

Version: 3

解决方法:

看来,每当使用-genkey时,都会生成一对公钥/私钥对,并将公钥包裹在证书(自签名)周围.因此,当我在-genkey命令之后立即使用“ keytool -list -v”命令时看到的证书就是公钥的证书.

标签:ssl,java

来源: https://codeday.me/bug/20191119/2034239.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数字证书是一种用于验证和保护数据传输的安全机制,它可以用于身份验证、数据加密和数字签名等应用。在Java中,数字证书的实现需要使用Java密钥Java KeyStore)和Java加密扩展(Java Cryptography Extension,JCE)。 以下是数字证书Java实现步骤: 1. 生成密钥对 首先需要生成一个公钥和私钥对,这可以使用Java密钥对生成器(KeyPairGenerator)类完成。以下示例代码展示了如何生成一个2048位的RSA密钥对: ``` KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); keyPairGenerator.initialize(2048); KeyPair keyPair = keyPairGenerator.generateKeyPair(); ``` 2. 创建数字证书请求 然后需要创建一个数字证书请求,这可以使用Java证书请求(Certification Request)类完成。以下示例代码展示了如何创建一个数字证书请求: ``` X500Name subject = new X500Name("CN=example.com,O=Example Organization,C=US"); PKCS10CertificationRequest request = new PKCS10CertificationRequest("SHA256withRSA", subject, keyPair.getPublic(), null, keyPair.getPrivate()); ``` 其中,X500Name表示证书主体的信息,PKCS10CertificationRequest表示数字证书请求的类型,"SHA256withRSA"表示使用SHA-256算法和RSA密钥对进行签名。 3. 签名数字证书请求 接下来需要将数字证书请求发送到数字证书颁发机构(CA)进行签名。在实际应用中,可以使用Java证书签名请求(CSR)类将数字证书请求发送到CA进行签名,或者使用其他第三方工具完成此操作。 4. 导入数字证书 签名完成后,数字证书将被发送回来。可以使用Java密钥KeyStore)类将数字证书导入到Java密钥中,以便在应用程序中使用。以下示例代码展示了如何将数字证书导入到Java密钥中: ``` KeyStore keyStore = KeyStore.getInstance("JKS"); keyStore.load(null, null); keyStore.setCertificateEntry("example", certificate); ``` 其中,"example"为数字证书别名,certificate为数字证书Java对象。 以上就是数字证书Java实现步骤。需要注意的是,在实际应用中,数字证书的生成、签名和导入通常需要更多的配置和参数设置,具体实现方式可能会有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值