出于学习目的,我尝试实现非对称刻印。我了解到证书有助于识别公钥的所有者。但是,如何实施证书?能给我一个我可以使用的证书的例子吗?
我实现了加密和解密,但是现在我想使用证书。
答案 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签名。