我尝试为学习目的实现不对称的辅助。我了解到证书有助于确定公共密钥的所有者。但是如何实施证书?你能给我一个可以使用的证书的例子吗?
我实施了加密和解密,但是现在我想使用证书。
您可以使用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"
的CertificateFactory
兼容。私钥与KeyFactory
与"RSA"
兼容为算法和PKCS8EncodedKeySpec
。
Java本身不能直接使用生成证书。您可以使用有弹性城堡甚至EJBCA,如果需要内部编码,那是一条非常陡峭的学习曲线。
证书是将某些其他信息附加到某人的公钥的数据,并由著名的第三方(授权(以数字方式签署。
证书的通用格式为X.509,在ASN1中编码。
典型的证书将至少包含"通用名称",主题密钥指纹(已通过公共密钥的哈希(,有效期和所有这些签名。