热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

使用openssl生成免费证书的方法步骤

这篇文章主要介绍了使用openssl生成免费证书的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一:什么是openssl? 它的作用是?应用场景是什么?

即百度百科说:openssl是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,它可以避免信息被窃听到。

SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape(网景)公司在推出第一个Web浏览器的同时,提出了SSL协议标准。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。

因为在网络传输的过程中,网络的数据肯定要经过wifi路由器对吧,那么我们通过路由器做些手脚我们就可以拿到数据,因此openssl的作用就是避免信息被窃听到。

那么openssl是如何保证信息不被窃听到呢?因此我们需要了解 非对称加密、数字签名、数字证书等一些基本概念的。

1.1 什么是非对称加密?

非对称加密是用密钥对数据进行加密,然后我们可以使用另一个不同的密钥对数据进行解密。这两个密钥就是公钥和私钥。

我们根据私钥可以计算出公钥,但是我们根据公钥计算不出来私钥的。私钥一般是有服务器掌握的,公钥则是在客户端使用的。

注意:非对称加密的具体算法我们这边不做研究。

1.2 什么是数字签名?

根据百度百科说:数字签名(又可以叫公钥数字签名)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,它是用于鉴别数字信息的方法。数字签名有两种互补的运算,一个是用于签名,另一个是用于验证。

作用是:它会将报文使用一定的HASH算法算出一个固定位数的摘要信息,然后使用私钥将摘要加密,然后会将刚才的报文一起发送给接收者,接收者会通过公钥将摘要解出来。也通过hash算法算出报文摘要,如果两个摘要一致,说明数据未被篡改,说明数据是完整的。

1.3 什么是数字证书?

根据百度百科说:数字证书是互联网通讯中标志通讯各方身份信息一串数字。提供了一种在Internet上验证通信实体身份的方式。
它是由CA颁发给网站的一种身份的方式。它里面包含了该网站的公钥、有效时间、网站的地址、及 CA的数字签名等。

作用是:它是使用CA的私钥将网站的公钥等信息进行了签名,当客户端请求服务器端的时候,网站会把证书发给客户端,客户端先通过CA的数字签名校验CA的身份,来证明证书的真实完整性。

了解到上面的非对称加密、数字签名、数字证书的概念之后,我们来看看它是如何来保证数据没有被伪造的:

SSL 实现认证用户和服务器

现在我们来想一个问题,如果我们现在访问我们的博客园网站,我们怎么知道访问的是真博客园还是假博客园呢?为了确定我们的博客园网站的服务器有没有被伪造,在SSL中有这么一个规则:假如我们向服务器发出请求后,服务器必须返回它的数字证书给接收者,当我们拿到数字证书之后,我们可以根据里面的ca数字签名,来检验数字证书的合法性。假如我们现在能够证明数字证书是博客园的,但是不代表发送给我们证书的服务器就是博客园的呢?为了解决这个问题,其实在我们拿到的证书里面会带有博客园的公钥,在之后的通信中,客户端会使用该公钥加密数据给博客园服务器,博客园服务器必须使用私钥才能够解出里面的数据。只要他能够解出数据出来,说明他是合法的,否则的话,是伪造的。如果是伪造的,那么就不能通讯。因此SSL就解决了服务器认证的问题了。

加密数据在通讯过程中如何防止数据不被窃取呢?

客户端第一次给服务器发送请求的时候(拿到证书之前的那个请求),会在请求里面放一个随机数(比如叫A),服务器的返回证书的响应里也会带一个随机数(比如叫B), 客户端拿到证书后,会使用公钥加密一个随机数(比如叫C)发送给服务器,因此客户端,服务器就有三个随机数:A、B、C。双方使用这些随机数和一个相同的算法会生成一个密钥,以后所有的通信都使用这个对称密钥来进行的。

一般情况下,这三个密钥不可能同时被泄露的,因为它是由三个随机数随机生成的。并且其中一个随机数使用了公钥加密的。因此是通过这种方式来保证数据不被窃取的。

上面都是在网上看到的一些概念性问题,简单的理解下就好了,知道是这么个概念就行了,而我们的openssl是SSL的实现版。因此openssl的作用避免信息被窃取到,它是通过上面的知识点来做到的。

openssl的应用场景:

在使用http网站中,我们经常看到网站会有一些广告什么的,这些广告其实不是网站自己放上去的,而是中间的运营商在中间篡改了内容导致的。现在我们可以使用https技术(基于openssl)来对数据进行加密的。它能保证数据不被篡改。

二:使用openssl生成免费证书

1 使用openssl工具生成一个RSA私钥

使用命令:

openssl genrsa -des3 -out server.key 2048

如上:des3 是算法,2048位强度(为了保密性)。 server.key 是密钥文件名 -out的含义是:指生成文件的路径和名称。

如下所示:

我们查看刚刚生成的私钥。使用命令如下:

openssl rsa -text -in server.key

如下图所示:

继续查看 server.key 使用命令:cat server.key, 如下图所示:

2. 创建证书签名请求CSR文件

使用命令如下:

openssl req -new -key server.key -out server.csr

-key的含义是:指定ca私钥
-out的含义是: server.csr 生成证书文件

如下所示:

运行如上命令后,生成CSR时会要求填入以下信息:

Country Name (2 letter code) []:CN            // 输入国家代码,中国填写 CN
State or Province Name (full name) []:HangZhou      // 输入省份,这里填写 HangZhou
Locality Name (eg, city) []:HangZhou           // 输入城市,我们这里也填写 HangZhou
Organization Name (eg, company) []:tbj          // 输入组织机构(或公司名,我这里随便写个tbj)
Organizational Unit Name (eg, section) []:tbj       // 输入机构部门
Common Name (eg, fully qualified host name) []:*.abc.com // 输入域名,我这边是 (*.abc.com) 
Email Address []:tugenhua0707@qq.com           // 你的邮箱地址

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456              // 你的证书密码,如果不想设置密码,可以直接回车

如上操作后,会在当前目录下生成以下两个文件:

server.key server.csr

如下图所示:

查看csr文件如下命令:

openssl req -text -in server.csr -noout

如下图所示:

3. 生成CA证书

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

x509的含义: 指定格式
-in的含义: 指定请求文件
-signkey的含义: 自签名

如下图所示:

注意:如上server.crt 是证书持有人的信息,持有人的公钥,以及签署者的签名等信息。

4. 生成客户端证书

生成客户端证书与生成CA证书相似。

4.1. 先要生成私钥

使用命令:

openssl genrsa -out client.key 2048

如下图所示:

4.2 生成请求文件

使用命令:

openssl req -new -key client.key -out client.csr

如下图所示:

4.3 发给ca签名

使用命令:

openssl x509 -req -days 365 -in client.csr -signkey client.key -out client.crt

如下图所示:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了求解gcdexgcd斐蜀定理的迭代法和递归法,并解释了exgcd的概念和应用。exgcd是指对于不完全为0的非负整数a和b,gcd(a,b)表示a和b的最大公约数,必然存在整数对x和y,使得gcd(a,b)=ax+by。此外,本文还给出了相应的代码示例。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 信息安全等级保护是指对国家秘密信息、法人和其他组织及公民的专有信息以及公开信息和存储、传输、处理这些信息的信息系统分等级实行安全保护,对信息系统中使用的信息安全产品实 ... [详细]
  • 无线认证设置故障排除方法及注意事项
    本文介绍了解决无线认证设置故障的方法和注意事项,包括检查无线路由器工作状态、关闭手机休眠状态下的网络设置、重启路由器、更改认证类型、恢复出厂设置和手机网络设置等。通过这些方法,可以解决无线认证设置可能出现的问题,确保无线网络正常连接和上网。同时,还提供了一些注意事项,以便用户在进行无线认证设置时能够正确操作。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • JavaScript设计模式之策略模式(Strategy Pattern)的优势及应用
    本文介绍了JavaScript设计模式之策略模式(Strategy Pattern)的定义和优势,策略模式可以避免代码中的多重判断条件,体现了开放-封闭原则。同时,策略模式的应用可以使系统的算法重复利用,避免复制粘贴。然而,策略模式也会增加策略类的数量,违反最少知识原则,需要了解各种策略类才能更好地应用于业务中。本文还以员工年终奖的计算为例,说明了策略模式的应用场景和实现方式。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • 本文详细介绍了相机防抖的设置方法和使用技巧,包括索尼防抖设置、VR和Stabilizer档位的选择、机身菜单设置等。同时解释了相机防抖的原理,包括电子防抖和光学防抖的区别,以及它们对画质细节的影响。此外,还提到了一些运动相机的防抖方法,如大疆的Osmo Action的Rock Steady技术。通过本文,你将更好地理解相机防抖的重要性和使用技巧,提高拍摄体验。 ... [详细]
author-avatar
靠小号3
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有