ssl什么是公钥和私钥?

公钥(Public Key)与私钥(Private Key)是通过加密算法得到的一个密钥对(即一个公钥和一个私钥,也就是非对称加密方式)。公钥可对会话进行加密、验证数字签名,只有使用对应的私钥才能解密会话数据,从而保证数据传输的安全性。公钥是密钥对外公开的部分,私钥则是非公开的部分,由用户自行保管。

通过加密算法得到的密钥对可以保证在世界范围内是唯一的。使用密钥对的时候,如果用其中一个密钥加密一段数据,只能使用密钥对中的另一个密钥才能解密数据。例如:用公钥加密的数据必须用对应的私钥才能解密;如果用私钥进行加密也必须使用对应的公钥才能解密,否则将无法成功解密。

SSL证书的原理

SSL证书采用公钥体制,即利用一对互相匹配的密钥对进行数据加密和解密。每个用户自己设定一把特定的、仅为本人所知的私有密钥(私钥),并用它进行解密和签名;同时设定一把公共密钥(公钥)并由本人公开,为一组用户所共享,用于加密和验证签名。

由于密钥仅为本人所有,可以产生其他人无法生成的加密文件,也就是形成了数字签名。

SSL证书是一个经证书授权中心(CA)数字签名的、包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。数字证书还有一个重要的特征就是只在特定的时间段内有效。

创建私钥

阿里云SSL证书服务对您私钥的加密算法和长度要求如下。

  • 加密算法使用RSA算法

  • 加密长度至少2,048位

您可以通过以下两种方式创建您的私钥。

  • 使用OpenSSL工具生成私钥

    1. 您可以从 OpenSSL官网网站 下载最新的OpenSSL工具安装包。

      说明

      OpenSSL版本必须是1.0.1g或以上版本。

    2. 安装OpenSSL工具后,在命令行模式下运行openssl genrsa -out myprivate.pem 2048生成您的私钥文件。生成后的私钥文件名称为myprivate.pem,加密长度为2,048。

  • 使用Keytool工具生成并导出私钥

    Keytool工具是JDK中自带的密钥管理工具,可以制作Keystore(jks)格式的证书文件,您可以从 官方地址 下载JDK工具包来获取Keytool工具。

    由于使用Keytool工具制作的公钥和私钥默认是不可以导出的,您需要从已经创建好的.keystore文件中导出私钥。

    在导出的文件中,以下部分的内容即是您的私钥:

    复制代码
    -----BEGIN RSA PRIVATE KEY-----
    ......
    -----END RSA PRIVATE KEY-----

    或者

    复制代码
    -----BEGIN PRIVATE KEY-----
    ......
    -----END PRIVATE KEY-----

    说明

    无论您通过哪种方式生成密钥,请您妥善地保管好您的私钥文件。私钥文件一旦丢失或者损坏,您申请的公钥及数字证书将无法使用。

相关推荐
Hello.Reader1 天前
NGINX SSL/TLS 预读模块解密 ngx_stream_ssl_preread_module 实战指南
网络·nginx·ssl
小刘同学++2 天前
用 OpenSSL 库实现 3DES(三重DES)加密
c++·算法·ssl
Hello.Reader2 天前
NGINX 四层 SSL/TLS 支持ngx_stream_ssl_module
运维·nginx·ssl
极客奇点2 天前
基于 Nginx 服务器的泛域名 SSL 证书申请与部署
服务器·nginx·ssl
墨城之左3 天前
Windows 上安装 devsidecar 后,使用 WSL ubuntu ssl 报错
windows·ubuntu·ssl
bubiyoushang8885 天前
解决 Git 访问 GitHub 时的 SSL 错误
git·github·ssl
小刘同学++6 天前
ECB(电子密码本,Electronic Codebook) 和 CBC(密码分组链接,Cipher Block Chaining)区分于用途
网络·ssl
itachi-uchiha8 天前
命令行以TLS/SSL显式加密方式访问FTP服务器
服务器·网络协议·ssl
moppol8 天前
SSL/TLS握手全流程拆解:从“Hello“到“安全通道“的每一个字节
网络·安全·ssl