公钥和私钥是一对,公钥是公开的,比如服务器持有公钥,对数据进行加密,接收端只有有对应的私钥才能对数据进行解密,私钥是不公开私自的。
数字签名跟上面是反过来的过程,客户端发送给服务器之前,用自己的私钥对数据进行 数字签名,服务器受到后,需要用公钥验证后才确定是否是相应的客户端发来的。这是个验证过程。
证书是官方对公钥的认可,它包含公钥和申请人的姓名,地理信息等。
自签名是非官方对公钥的认可,同样包含公钥和申请人的姓名,地理信息等,但它不具有官方属性。
你可以使用 openssl 命令行工具来生成自签名的 SSL 证书和密钥。以下是步骤:
打开终端。
输入以下命令,生成私钥(server.key):
openssl genrsa -out server.key 2048
openssl genrsa -out server.key 2048
这将生成一个 2048 位的 RSA 私钥。
输入以下命令,使用刚才的私钥来生成证书签名请求(CSR):
openssl req -new -key server.key -out server.csr
在这一步,你将被要求提供一些信息,如你的国家、省份、城市、组织名称等。这些信息将包含在你的证书中。
输入以下命令,使用 CSR 和私钥生成自签名证书(server.crt):
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
现在你应该有了 server.crt 和 server.key 文件,它们分别是你的公开证书和私钥。你可以在需要的地方使用它们。
请注意,由于这是一个自签名证书,所以它不会被任何证书颁发机构(CA)信任。如果你正在为生产环境配置 SSL,你可能需要购买并使用由受信任的 CA 颁发的证书。