在RSA和非对称加密的情况下,证书是什么?

时间:2019-05-14 19:13:05

标签: java encryption rsa encryption-asymmetric

出于学习目的,我尝试实现非对称刻印。我了解到证书有助于识别公钥的所有者。但是,如何实施证书?能给我一个我可以使用的证书的例子吗?

我实现了加密和解密,但是现在我想使用证书。

2 个答案:

答案 0 :(得分:1)

您可以使用OpenSSL生成自签名的X.509证书-在线上有许多教程。证书具有标准化格式,并且不特定于Java。

openssl req -x509 -newkey rsa:3072 -sha256 -nodes -keyout privkey.pem -out selfsigned.pem
openssl pkcs8 -in privkey.pem -nocrypt -outform DER -out privkey.p8
openssl x509 -in selfsigned.pem -outform DER -out selfsigned.crt

这将为证书生成两个文件(其中包含公钥),为私钥生成一个文件。还有一个PEM编码的私钥和证书,Java不直接处理。私钥文件未加密或受到其他保护,因此只能将其用于测试目的。

该证书与"X.509"的{​​{3}}兼容。私钥与CertificateFactory(以"RSA"作为算法和KeyFactory)兼容。

生成证书时,不能直接使用

Java本身 。如果需要代码内生成,则可以使用Bouncy Castle甚至是EJBCA,但这是一个非常陡峭的学习过程。

答案 1 :(得分:0)

证书是将某些附加信息附加到某人的公共密钥上的数据,并由知名的第三方(机构)进行数字签名。

证书的通用格式是X.509,以ASN1编码。

典型的证书至少应包含“公用名”,主题密钥指纹(要认证的公共密钥的哈希),有效期和所有这些的CA签名。