首页 > 其他分享 >openssl理解及命令使用

openssl理解及命令使用

时间:2022-11-06 16:33:27浏览次数:88  
标签:加密 证书 openssl 命令 理解 arg 服务器 客户端

SSL

SSL即安全套接字协议(Secure Sockets Layer),是为网络通信提供安全及数据完整性的一种安全协议。SSL在传输层与应用层之间对网络连接进行加密。
使用SSL有很多好处:认证用户和服务器,确保数据发送到正确的客户机和服务器;加密数据以防止数据中途被窃取;维护数据的完整性,确保数据在传输过程中不被改变。作为一款优秀的产品,SSL功能是必不可少的。

理解数字证书的概念

数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。

最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。数字证书还有一个重要的特征就是只在特定的时间段内有效。数字证书是一种权威性的电子文档,可以由权威公正的第三方机构,即CA(例如中国各地方的CA公司)中心签发的证书,也可以由企业级CA系统进行签发。
一般证书分有三类,根证书、服务器证书和客户端证书。根证书,是生成服务器证书和客户端证书的基础,是信任的源头,也可以叫自签发证书,即CA证书。服务器证书,由根证书签发,配置在服务器上的证书。客户端证书,由根证书签发,配置在服务器上,并发送给客户,让客户安装在浏览器里的证书。
在了解SSL的时候可能会遇到很多名词概念,如

  • 对称加密:例如平时给文件加密,加密和解密用的同一密码,即对称加密。
  • 非对称加密:加密时用一个密码,而解锁时需要用另一个密码,即非对称加密。目前很流行的非对称加密算法是RSA算法,它是基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
  • 公钥:公钥是公开的,用来传输对方的随机密钥,只有通过私钥才能解密,这时就只有双方知道密钥了,从而达到安全传输的目的。
  • 私钥:自己保留,只有通过私钥才能解密公钥加密的数据,对于私钥的使用可以设置密码。

通信过程

下面以最常见的单向认证为例,简述一下通信过程:

①客户端向服务器发送请求

②服务器将包含公钥的证书通过明文发送给客户端

③客户端通过根证书验证服务器证书是否有效

④如果有效,客户端生成一个随机密钥,也叫对称加密密钥使用服务器的公钥进行加密传输

⑤服务器通过私钥解密客户端传输的对称加密密钥

⑥这时只有服务器和客户端知道这个对称加密密钥,双方可以进行对称加密传输

利用openssl version -a来查看当前openssl版本

prime 检查一个数是否是素数


参数说明:
openssl prime [-hex] [-generate] [-bits bit] [-safe] [-check arg]

  • -hex:输入的数据为16进制。

  • -generate:是否是产生一个素数。

  • -bits bit:产生的素数的位数。

  • -safe:产生的大数是否是安全的。

  • -check arg:需要检查的数。
    输入openssl,再使用 prime -help查看功能

openssl ecparam [-inform DER|PEM] [-outform DER|PEM] [-in filename] [-out filename] [-noout] [-text] [-C] [-check] [-name arg] [-list_curve] [-conv_form arg] [-param_enc arg] [-no_seed] [-rand file(s)] [-genkey] [-engine id]

-list_curves:打印所有可用的算法曲线

-genkey:生成密钥

-name:使用指定的算法曲线

-out:输出文件

使用 secp256k1 作为算法曲线,生成 EC 参数和私钥,并输出到 ca-key_.key 文件中
openssl ecparam -genkey -name secp256k1 -out ca-key_.key

-out file:结果输入到file中
num:随机数长度

req

openssl req [-inform PEM|DER] [-outform PEM|DER] [-in filename] [-passin arg] [-out filename] [-passout arg] [-text] [-pubkey] [-noout] [-verify] [-modulus] [-new] [-rand file(s)] [-newkey rsa:bits][-newkey alg:file] [-nodes] [-key filename] [-keyform PEM|DER] [-keyout filename] [-keygen_engine id] [-[digest]] [-config filename] [-subj arg] [-multivalue-rdn] [-x509] [-days n] [-set_serial n][-asn1-kludge] [-no-asn1-kludge] [-newhdr] [-extensions section] [-reqexts section] [-utf8] [-nameopt] [-reqopt] [-subject] [-subj arg] [-batch] [-verbose] [-engine id]

参考博客:http://www.wjhsh.net/you-knows-p-13811723.html

原文链接:https://blog.csdn.net/qq_36973838/article/details/107672821

标签:加密,证书,openssl,命令,理解,arg,服务器,客户端
From: https://www.cnblogs.com/ssssspm/p/16803779.html

相关文章

  • Makefile 学习二:命令和变量
    你必须非常努力,才能看起来毫不费力!微信搜索公众号[漫漫Coding路],一起FromZeroToHero!前言在Go语言开发中,我们希望能够规范代码风格,每个成员在提交时可以一键格......
  • linux命令日常使用
    jps是jdk提供的一个查看当前java进程的小工具,全称是JavaVirtualMachineProcessStatusTool输出jvm参数jps-v scp命令,用于文件复制scp/d/software/a.ja......
  • 深入理解Vuex、原理详解、实战应用
    辅助理解vuex的工作原理:好比一个客户(VueComponents)去饭店吃饭,客人首先和服务员(Actions)对接,然后服务员再将客户的需求讲述给厨房的厨师(Mutations)。存在一种情况、客户和厨......
  • 计算机快捷键和Dos基础命令
    计算机快捷键任务管理器→ctrl+shift+esc打开任务管理器shift+delete→永久删除基础的DOS命令打开CMD的方式开始+系统+命令提示符Win键+R输入cmd打开控制台(推荐......
  • 【Azure 环境】Azure 云环境对于OpenSSL 3.x 的严重漏洞(CVE-2022-3602 和 CVE-2022-3
    问题描述引用报告:(OpenSSL3.x曝出严重漏洞: ​​​https://www.ctocio.com/ccnews/37529.html​​ )最近OpenSSL3.x爆出了严重安全漏洞,分别是 CVE-2022-3602和 CVE-202......
  • 【Azure 环境】Azure 云环境对于OpenSSL 3.x 的严重漏洞(CVE-2022-3602 和 CVE-2022-3
    问题描述引用报告:(OpenSSL3.x曝出严重漏洞:https://www.ctocio.com/ccnews/37529.html )最近OpenSSL3.x爆出了严重安全漏洞,分别是 CVE-2022-3602和 CVE-2022-3786.......
  • 深入理解Java内存区域(最新版面试题)
    1、什么是JVM?JVM(JavaVirtualMachine)是用于运行Java字节码的虚拟机,包括一套字节码指令集、一组程序寄存器、一个虚拟机栈、一个虚拟机堆、一个方法区和一个垃圾回收器。JVM......
  • 执行Maven的test命令报错
    参考网址:https://blog.csdn.net/weixin_46688566/article/details/126470742解决方案在pom.xml文件中加入以下依赖:<plugin><groupId>org.eclipse.m2e</groupId>......
  • 第2-1-2章 传统方式安装FastDFS-附FastDFS常用命令
    目录3安装配置3.1安装GCC3.2安装libevent3.3安装libfastcommon3.4安装FastDFS3.5安装fastdfs-nginx-module3.5安装Nginx3.6配置FastDFSTracker3.5.1配置Tracker3......
  • 记录一下常用的git命令
     ##1、撤销修改后的文件1.本地*修改*了一些文件(并没有使用gitadd到暂存区),想放弃修改-单个文件/文件夹:```shellgitcheckout--filename```-所有文......