1、生成RSA密钥

> openssl genrsa -des3 -out mykey.pem 2048

或者:

> openssl genrsa -out mykey.pem 2048

建议用2048位密钥,少于此可能会不安全或很快将不安全。

2、生成证书请求

> openssl req -new -key mykey.pem -out cert.csr

cert.csr即一个证书请求文件,可以拿着这个文件去数字证书颁发机构(CA)申请数字证书。CA会给一个新的文件cacert.pem,即数字证书。

3、生成证书
若自己测试,则证书的申请机构和颁发机构都是自己。可以用如下命令生成证书:

> openssl req -new -x509 -key mykey.pem -out cert.pem -days 1095

4、使用数字证书和密钥
有了mykey.pem和cert.pem文件后就可以在自己的程序中使用了,比如做一个加密通讯的TCP通信连接。

TLS加密大致原理如下:
简单说来,TLS通信的核心是使用 非对称加密 去协商一个密钥Key,然后通信双方使用密钥Key进行对称加密通信,具体过程如下:

  1. 客户端获取服务器证书(即前面所述的cert.pem),验证证书合法有效,以确保公钥来自服务器,而不是伪造的公钥。
  2. 客户端生成一个随机数A,并使用服务器证书(cert.pem)中的公钥加密一个随机数A,发送给服务器
  3. 服务器用私钥(即前面所述的mykey.pem )解密得到随机数A(服务器私钥一定要保存好,不可泄露)
  4. 后续双方使用随机数A进行对称加密通信。

这样即使数据被第三方拦截,也无法得到随机数A(因为私钥只在服务器手中),所以后续双方的对称加密通信也是安全的。当然,这只是大致原理,具体实现远远复杂的多。

以上为个人理解总结,欢迎纠正指教!

TLS原理及证书生成相关推荐

  1. HTTPS原理与证书生成

    原文链接: HTTPS原理与证书生成 HTTPS HTTPS与HTTP是什么关系呢?我们可以对比下HTTP与HTTPS的请求过程: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 ...

  2. SSL/TLS协议原理与证书签名多种生成方式实践指南

    本章目录: 0x00 前言简述 CA 认证原理 PKI 公钥基础设施 0x01 自签名SSL证书生成 1.在线(脚本)生成 2.OpenSSL 生成 3.CFSSL 生成 0x03 cfssl 使用实 ...

  3. 使用TLS和Mosquitto Broker实现安全通信之密钥和证书生成

    目录 1 前言 2 概览 3 密钥和证书生成 3.1 创建CA密钥对(根证私钥) 3.2 创建CA证书请求(根证书请求文件) 3.3 创建Mosquitto Broker相关密钥 3.4 创建CA证书 ...

  4. TLS双向认证之生成双端证书信息

    目录 TLS双向认证需要的认证文件 制作根证书 第三方机构的根证书 自签根证书(基于openssl) 根证书签发证书 服务端证书 客户端证书 最终需要使用的文件 TLS双向认证需要的认证文件 服务端: ...

  5. SSL/TLS加密证书生成(一)

    client为Nxlog或者rsyslog的server和client证书生成 生成证书应该是在server端生成的,server和client的证书都是在server端生成,生成的命令如下: 1.生 ...

  6. https ssl单项认证和双向认证以及证书生成

    HTTP(HyperText Transfer Protocol,超文本传输协议)被用于在Web浏览器和网站服务器之间传递信息,在TCP/IP中处于应用层.这里提一下TCP/IP的分层共分为四层:应用 ...

  7. 来自Facebook的KTLS(Kernel SSL/TLS)原理和实例

    抽了点时间研究了下KTLS,这源自于跟同事交流的一个问题,那就是现如今的HTTPS服务器以及scp命令传输本地文件的时候,无法使用sendfile系统调用!         这个话题让我想起了很多的老 ...

  8. 来自Facebook的KTLS Kernel SSL/TLS 原理和实例

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 抽了点时 ...

  9. Elasticsearch基础3——密钥库工具、证书生成工具及四种生成模式、https请求步骤流程

    文章目录 一.密钥库工具(elasticsearch-keystore) 1.1 列出密钥库里的设置 1.2 查看密钥库密码 1.3 设置/改变秘钥库密码 1.4 添加字符串设置 1.5 添加文件设置 ...

最新文章

  1. 通俗易懂:快速理解ipv4的NAT穿透原理
  2. 很高兴加入51cto——交朋友
  3. Remove Nth Node From End of List
  4. Hadoop报错:All specified directories are failed to load.
  5. 用户和组 win2003
  6. Hello world cpp之旅 - 字符串(1)
  7. 简单远程控制(仅传递鼠标和键盘消息)的实现
  8. Java字符串排序后输出
  9. jsZip将多个文件压缩成一个压缩包
  10. 2018中原工学院网络安全校赛
  11. 口袋小精灵JAVA版下载_口袋小精灵200合一
  12. macmini作为远程服务器,160台Mac mini组成的终极服务器
  13. transform模板函数调用tolower函数报错原因、解决办法
  14. WEB打印控件Lodop的使用
  15. UE4 虚幻发光材质避免黑色渐变
  16. android MDE工程师,Android Application Addon(插件) 架构及管理
  17. Kubernetes--k8s---存活探针和就绪探针的最佳实践
  18. Kronos木马都在不断进步,而你呢?
  19. Cocoss2d-x开发流程工具化思想与实现
  20. MATLAB experiment<6>

热门文章

  1. k8s——kubeadm工具使用
  2. [UVM] include_coverage not located message
  3. React---hooks的使用
  4. Bitwise Operators
  5. css+svg实现的定宽高比
  6. Expeditious Cubing(浮点数处理)
  7. 域渗透非约束委派Spooler
  8. 二叉树【按层打印、序列化、反序列化】
  9. mt6739耳机通道配置外置功放
  10. 计算机二级落户上海加分,上海落户哪些重点单位加分