简单介绍OpenSSL用法详解

OpenSSL用法详解

 

OpenSSL

 

       组件:libcrypto,libssl

 

                openssl

 

       openssl

 

              众多子命令,可分为三类:

 

              标准命令

 

              消息摘要命令(dgst子命令)

 

              加密命令(enc子命令)           

 

       标准命令:enc,ca,reeq,genrsa…

 

linux系统上的随机数生成器

 

       /dev/random:仅从熵池返回随机数,随机数用尽,阻塞进程

 

       /dev/urandom:从熵池中返回随机数,随机数用尽,会利用软件生成伪随机数,不会阻塞进程,但不够安全

 

       熵池中随机数的来源: 硬盘IO中断的时间间隔

 

使用openssl完成对称加密

 

       支持的算法:3des、aes、blowfish、towfish

 

      1、 enc子命令:

 

              加密:

]#openssl enc -e -des3 -a -salt -in fstab -out fstab.cipher

 

              解密:

]#openssl enc -d -des3 -a -salt -out fstab.out -in fstab.cipher

 

使用openssl完成单向加密

 

      2、 dgst子命令             

]#md5sum fstab]#openssl dgst -md5 fstab

 

 

使用openssl生成用户加密

 

       生成随机数:

]#openssl rand -base64 6      #8进制随机数
]#openssl rand -hex 30        #16进制随机数
]#openssl passwd -1 -salt $(openssl rand -hex 6)

 

 

使用openssl完成公钥加密

 

       加密解密

 

              支持的算法:RSA、ELGamal

 

              工具:openssl rsautl,gpg

 

       数字签名

 

              支持的算法:RSA、ELGamal、DSA

 

              工具:openssl rsautl,gpg

 

       密钥交换

 

              支持的算法:RSA、DH

 

       如何生成密钥对

 

              如何生成私钥:                   

]#(umask 077;openssl genrsa -out /root/mykey.private 2048)

 

 

        注意:生成的私钥除了属主,其他任何用户都不应该有任何权限

 

        如何从公钥中提取私钥                    

]#openssl rsa -in /root/mykey.private -pubout -out /root/mykey.public

 

 

CA

 

       公共权威CA

 

       私有CA

 

如何自建CA:

 

       openssl

 

       openCA:二次封装的openssl。

 

       配置文件:/etc/pki/tls/openssl.cnf

 

 

如何构建私有CA:

 

在确认配置为CA的服务器上生成一个自签证书,并为CA提供所需要的目录及文件

 

        步骤:

 

              1、生成私钥:                    

]#(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)

 

              2、生成自签证书:          

]#openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655

 

              -new:生成证书签署请求

 

              -x509:生成自签格式证书,专用于创建私有CA

 

              -key:生成请求时用到的私钥文件路径

 

              -out:生成的请求文件路径,如果自签操作将直接生成签署过的证书

 

              -days:证书的有效时长,单位是day

 

 

 

             3、 为CA提供所需的目录及文件

 ]#mkdir -pv /etc/pki/CA/{certs,crl,newcerts} ]#touch /etc/pki/CA/{serial,index.txt} ]#echo 01 > /etc/pki/CA/serial

 

 

要用到证书进行安全通信的服务器,需要向CA请求签署证书

 

步骤:

 

       1、在用到证书的主机上生成私钥            

~]# mkdir /etc/httpd/ssl~]# cd /etc/httpd/ssl~]# (umask 077;openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)

 

 

       2、生成证书签署请求       

]# openssl req -new -key httpd.key -out httpd.csr -days 365

 

 

       3、将请求发送到CA服务器上            

]# scp httpd.csr root@10.1.154.97:/etc/pki/CA/certs

 

       4、在CA上签署证书请求            

]#openssl ca -in httpd.csr -out httpd.crt -days 365

 

 

       5、签署证书之后,将证书拷贝给请求的主机             

]#scp httpd.crt root@10.1.154.94:/etc/httpd/ssl

 

 

       6、查看证书中的信息              

]# openssl x509 -in httpd.crt -noout -serial -subject

 

              -serial:查看证书序列号

 

              -subject:查看证书主体信息

 

 

       7、如何吊销证书,需要在CA上执行

 

              (1)客户端获取要吊销证书的serial            

]# openssl x509 -in httpd.crt -noout -serial -subject

 

              (2)CA吊销证书

 

              先根据客户提交的serial和subject信息,对比其与本机数据库index.txt中存储的是否一致,一致,则吊销           

]#openssl ca -revoke ./certs/httpd.crt

 

 

              (3)生成证书吊销列表            

]#echo 01 > /etc/pki/CA/crlnumber

 

              (4)更新证书吊销列表             

]#openssl ca -gencrl -out ./certs/httpd.crt

 

 

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索算法
, 服务器
, 文件
, 加密
随机数
openssl 命令详解、openssl详解、openssl.cnf 详解、openssl api 详解、openssl用法,以便于您获取更多的相关知识。

时间: 2024-09-20 17:32:31

简单介绍OpenSSL用法详解的相关文章

《Ansible权威指南》一2.4 Ansible系列命令用法详解与使用场景介绍

2.4 Ansible系列命令用法详解与使用场景介绍 如何获取Ansible的系列命令呢?在终端键入ansible后连续按两次Tab键,会补全所有以ansible字母开头的命令,这些命令均是Ansible系列命令.本节我们来逐一介绍Ansible的系列命令使用. ansible ansible-galaxy ansible-pull ansible-doc ansible-playbook ansible-vault ansible-console 2.4.1 ansible 命令ansible

js replace 与replaceall实例用法详解

这篇文章介绍了js replace 与replaceall实例用法详解,有需要的朋友可以参考一下   stringObj.replace(rgExp, replaceText) 参数 stringObj 必选项.要执行该替换的 String 对象或字符串文字.该字符串不会被 replace 方法修改. rgExp 必选项.为包含正则表达式模式或可用标志的正则表达式对象.也可以是 String 对象或文字.如果 rgExp 不是正则表达式对象,它将被转换为字符串,并进行精确的查找;不要尝试将字符串

Extjs Window用法详解

今天我们来介绍一下Extjs中一个常用的控件Window.Window的作用是在页面中创建一个窗口,这个窗口作为容器,可以在它里面加入grid.form等控件,从而来实现更加复杂的界面逻辑. 本文的示例代码适用于Extjs 4.x和Extjs 5.x,在Extjs 4.2.1 和Extjs 5.0.1中亲测可用! 本文由齐飞(youring2@gmail.com)原创,并发布在http://www.qeefee.com/article/extjs-window-in-detail,转载请注明出处

PowerShell攻防进阶篇:nishang工具用法详解

本文讲的是PowerShell攻防进阶篇:nishang工具用法详解, 1.简介 Nishang是一款针对PowerShell的渗透工具.说到渗透工具,那自然便是老外开发的东西.国人开发的东西,也不是不行,只不过不被认可罢了.不管是谁开发的,既然跟渗透有关系,那自然是对我们有帮助的,学习就好.来源什么的都不重要.总之,nishang也是一款不可多得的好工具.非常的好用. 2.简单的安装与问题处理   先到github上去下载nishang,可以使用git命令直接下载,如果没有装的话下载zip文件

《Ansible权威指南 》一Ansible命令用法详解

2.3 Ansible命令用法详解 Ansible命令行执行方式有Ad-Hoc.Ansible-playbook两种方式,Web化执行方式其官方提供了付费产品Tower(10台以内免费),个人的话可以基于其提供的API开发类似的Web化产品.关于命令行执行的两种方式Ad-Hoc和Ansible-playbooks.什么是Ad-Hoc及Ad-Hoc与Ansible-playbook的区别我们在第3章有详细介绍,这里不再赘述.需简要说明的是两者没有本质上的区别,Ad-Hoc主要用于临时命令的执行,A

《Ansible权威指南》一2.3 Ansible命令用法详解

2.3 Ansible命令用法详解 Ansible命令行执行方式有Ad-Hoc.Ansible-playbook两种方式,Web化执行方式其官方提供了付费产品Tower(10台以内免费),个人的话可以基于其提供的API开发类似的Web化产品.关于命令行执行的两种方式Ad-Hoc和Ansible-playbooks.什么是Ad-Hoc及Ad-Hoc与Ansible-playbook的区别我们在第3章有详细介绍,这里不再赘述.需简要说明的是两者没有本质上的区别,Ad-Hoc主要用于临时命令的执行,A

谈谈jQuery Ajax用法详解_jquery

定义和用法 ajax() 方法通过 HTTP 请求加载远程数据. 该方法是 jQuery 底层 AJAX 实现.简单易用的高层实现见 $.get, $.post 等.$.ajax() 返回其创建的 XMLHttpRequest 对象.大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性. 最简单的情况下,$.ajax() 可以不带任何参数直接使用. 注意:所有的选项都可以通过 $.ajaxSetup() 函数来全局设置. jQuery Ajax在web应用开发中很常用

jQuery表格插件datatables用法详解_jquery

一.Datatables简介DataTables是一个jQuery的表格插件.这是一个高度灵活的工具,依据的基础逐步增强,这将增加先进的互动控制,支持任何HTML表格.主要特点: 自动分页处理 即时表格数据过滤 数据排序以及数据类型自动检测 自动处理列宽度 可通过CSS定制样式 支持隐藏列 易用 可扩展性和灵活性 国际化 动态创建表格 免费的 二.如何使用在做后台的时候并没有美工和前端工程师来配合你做页面,为了显示数据并有一定的美感,我们可以使用jQuery的DataTables插件来帮助我们完

Angular 中 select指令用法详解_AngularJS

最近在angular中使用select指令时,出现了很多问题,搞得很郁闷.查看了很多资料后,发现select指令并不简单,决定总结一下. select用法: <select ng-model="" [name=""] [required=""] [ng-required=""] [ng-options=""]> </select> 属性说明: 发现并没有ng-change属性 ng-