当前位置: 首页 > article >正文

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-----

    说明

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


http://www.kler.cn/news/162718.html

相关文章:

  • ES-深入理解倒排索引
  • Docker-compose容器编排与容器监控
  • 基于运算放大器的电压采集电路
  • Elasticsearch:什么是检索增强生成 (RAG)?
  • 【力扣100】7.无重复字符的最长子串
  • leetcode 3. 无重复字符的最长子串
  • Mysql 索引概念回顾
  • 基于java的贪吃蛇小游戏
  • Zabbix 执行自定义key脚本超时timeout while executing a shell script
  • Linux C语言 39-进程间通信IPC之管道
  • 【科学炼丹指南】机器学习最科学、最有效的参数优化全流程实现方法
  • VUE学习一、环境的安装
  • 【力扣100】8.找到字符串中所有字母异位词
  • HarmonyOS通过OpenGL渲染显示yuv数据
  • modbus转profinet网关解决plc插槽号不够用的情况
  • Numpy数组的运算(第7讲)
  • BUUCTF-WEB-刷题记录(2)
  • Netty03-核心组件NioEventLoopGroup解读
  • 使用Rust Rayon库提升程序运行速度
  • Pytest+Allure生成自动化测试报告!
  • WebGL笔记:矩阵旋转运算的原理和实现
  • stm32串口编程实例-实现数据的收发功能
  • 【CVE 复现】CVE-2022-0185 fsconfig之整数溢出
  • LinuxBasicsForHackers笔记 -- 使用和滥用服务
  • 自动化测试框架需要具备哪些功能?
  • 2、Redis变慢原因排查(下)
  • 使用Echarts.js绘制环形图(指定触发高亮事件)
  • Python中读写(解析)JSON文件的深入探究
  • MIT线性代数笔记-第26讲-对称矩阵及正定性
  • VUE学习二、创建一个前端项目