RSA 和非对称加密上下文中的证书是什么?

What is the certificate in the context of RSA and asymmetric encryption?

出于学习目的,我尝试实施非对称加密。我了解到证书有助于识别 public 密钥的所有者。但是我怎样才能实施证书呢?你能给我一个我可以使用的证书的例子吗?

我实现了加解密,现在想用证书

您可以使用 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

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

证书与CertificateFactory for "X.509". The private key is compatible with KeyFactory with "RSA" as algorithm and PKCS8EncodedKeySpec兼容。

Java 本身不能 直接 在生成证书时使用。如果需要 in-code 生成,您可以使用 Bouncy Castle 甚至 EJBCA,但这是一个相当陡峭的学习曲线。

证书是将某些附加信息附加到某人的 public 密钥的一段数据,并由 well-known third-party(权威机构)进行数字签名。

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

典型的证书至少包含 "common name"、主题密钥指纹(被认证的 public 密钥的散列)、有效期和所有这些的 CA 签名。