Linux之数字证书

新书速览|Ubuntu Linux运维从零开始学_ubuntu linux运维从零开始学 pdf 下载-CSDN博客

《Ubuntu Linux运维从零开始学(Linux技术丛书)》(肖志健)【摘要 书评 试读】- 京东图书 (jd.com)

随着网络环境的恶化,人们已经逐渐抛弃网络上面的明文数据传输,而是采用各种加密方式将数据加密后传输。通过密钥加密是目前比较流行的加密方式。系统利用公钥将数据加密,对方收到数据后通过私钥将数据解密。这些操作都需要用到证书,所以证书在保证网络安全方面有着不可代替的作用。本节将介绍证书的类型以及创建方法。

12.4.1  数字证书

公开密钥加密最常见的用途就是通过安全套接字来加密传输数据。例如HTTPS就是将原本明文传输的HTTP协议通过SSL加密。通过SSL可以使得本身并不支持数据加密的协议能够将数据加密后再进行传输。

公钥通常通过证书来分发。一般情况下,证书需要认证机构来签发。而认证机构就是一个受信任的第三方机构。由认证机构来确认证书中包含的内容是准确的、真实的。

从认证机构获得一个数字证书的过程非常简单,其基本步骤如下:

   用户创建一个私钥和公钥密钥对。

   基于公钥创建一个数字证书请求。该请求中包含服务器和公司信息。

   向认证机构发送证书请求。

   当认证机构确认用户提供的资料之后,将数字证书颁发给用户。

   用户将数字证书安装到服务器,并使用该证书配置相应的应用程序。

12.4.2  生成密钥

在申请数字证书之前,用户需要自己生成密钥对。根据不同的用途,密钥分为密码保护的密钥和没有密码保护的密钥。如果申请的证书用于某些守护进程,例如Apache、Postfix以及Tomcat等,则应该生成没有密码保护的密钥,这样的话用户就不需要在每次启动服务时输入密码。但是,没有密码保护的密钥相对而言是不安全的,所以,除应用于守护进程外,生成的密钥都应该通过密码保护。

密钥可以通过OpenSSL软件包来完成,该软件包提供了一个名称为openssl的命令。

下面的命令用于创建一个密码保护的私钥:

liu@ubuntu:~$ openssl genrsa -des3 -out server.key 2408
Generating RSA private key, 2408 bit long modulus
........................................+++
......+++
e is 65537 (0x10001)
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:

其中,genrsa为openssl的子命令,表示生成一个RSA算法私钥。-des3表示使用DES3加密算法保护RSA私钥。如果不指定-des3选项,则生成的私钥没有密码保护。-out选项用来指定私钥文件名。最后的数字2408为生成的私钥的位数。

当执行完以上命令之后,生成的私钥便以server.key为文件名存储在当前目录中。用户可以使用cat命令查看其内容,如下所示:

liu@ubuntu:~$ cat server.key 
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,7BDF4938AA6D0EFFBtbHjd5umBfZB3YWPcnDo500RZaYYcjG334cXhc7TPFGRG7J76iSMYTjh29GWMIg
Vdxkh21kYay4LBbk8ljrVXUaq26BDJoKBMekavWLxxbw/uhZiG4bT1K3e5LYpO0e
GWhxmIDzhKUMuYG5lXBT4YwH5lQjOfp9pxFcroiE978ESxG6gddGp4ty+ONyU5wb
fQGJuNTCvre1VvZokS8EFWiiorSsl9yT0TxOLkyBUCqUzcHXO3fLiwO5RKHx28Mf
…
nTyCCAn8Ks4=
-----END RSA PRIVATE KEY-----

接下来,用户可以使用openssl命令从server.key文件生成一个没有密码保护的私钥,如下所示:

liu@ubuntu:~$ openssl rsa -in server.key -out server-nopasswd.key
Enter pass phrase for server.key:
writing RSA key

其中,rsa子命令表示管理RSA密钥,-in选项用来指定输入的密钥文件,-out选项指定输出的密钥文件。在输出密钥的过程中,需要用户输入前面设置的保护密码。

12.4.3  生成证书签署请求

证书签署请求(Certificate Signing Request,CSR),即通过前面生成的私钥生成一个数字证书请求。该操作需要使用openssl命令的req子命令。

例如,下面的命令用于以前面创建的私钥生成一个证书签署请求:

liu@ubuntu:~$ openssl req -new -key server.key -out server.csr
Enter pass phrase for server.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:Guangdong
Locality Name (eg, city) []:Guangzhou
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Demo
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:www.demo.com
Email Address []:admin@demo.comPlease enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

在生成请求的过程中,会要求用户输入一系列的信息,包括国家名称、省名、城市、组织机构、域名以及电子邮件地址等。此外,还要求用户输入一个可选的密码和公司名称。当所有的问题都回答完毕之后,一个包含证书请求的名称为server.csr的文件便生成了。用户可以将该文件提交给证书认证机构,认证机构会根据该文件生成一个数字证书发送给用户。

除通过认证机构申请证书外,用户也可以创建自己签署的数字证书。当然,由于自签署证书并没有经过第三方的认证,因此不可以用在生产环境中,仅仅作为开发或者测试使用。

下面的命令用于生成一个自签名的数字证书:

liu@ubuntu:~$ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Signature ok
subject=/C=CN/ST=Guangdong/L=Guangzhou/O=Demo/OU=IT/CN=www.demo.com/emailAddress=admin@demo.com
Getting Private key
Enter pass phrase for server.key:

在执行上面的命令的时候,会要求用户输入私钥的密码,输入完成之后,生成的证书便保存在server.crt文件中。

12.4.4  安装证书

数字证书的安装比较简单,直接将证书和私钥复制到指定的目录即可,如下所示:

liu@ubuntu:~$ sudo cp server.crt /etc/ssl/certs/
liu@ubuntu:~$ sudo cp server.key /etc/ssl/private/

安装完成之后,用户可以在其他应用系统中使用该数字证书。例如在Apache中启用HTTPS。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/406523.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++ 面试 - 面向对象】每日 3 题(六)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏&…

【RabbitMQ】高级特性

本文将介绍一些RabbitMQ的重要特性。 官方文档:Protocol Extensions | RabbitMQ 本文是使用的Spring整合RabbitMQ环境。 生产者发送确认(publish confirm) 当消息发送给消息队列,如何确保消息队列一定收到消息呢,RabbitMQ通过 事务机制 和 …

Java巅峰之路---进阶篇---面向对象(二)

Java巅峰之路---进阶篇---面向对象(二) 多态介绍多态调用成员的特点多态的优势、弊端以及解决方案综合练习 包和final包的介绍使用其他类的规则(导包)final关键字final的用途常量 权限修饰符和代码块权限修饰符的介绍四个权限修饰…

为什么需要文献综述模板和创建文献综述技巧

为什么需要文献综述模板? 文献综述模板可以作为特定主题的指南。如果您的时间有限,无法进行更多研究,文献综述大纲示例可以为您提供帮助,因为它可以为您提供您打算研究的内容的概述。 甚至各个领域的专业人士也依赖文学评论来了解…

Openstack 与 Ceph集群搭建(上): 规划与准备

文章目录 一、写在前面1. 网络架构2. 节点规划3. 软件版本4. 避坑指南 二、基础配置1. host配置2. 修改hostname名称3. 确保root账号能登录系统4. 配置NTP5. 配置免密登录 一、写在前面 近期将进行三节点的Openstack、Ceph集群混合部署,本人将详细记录该过程。在此…

Linux系统编程(14)UDP全双工通信和TCP半双工通信

一、UDP全双工通信 UDP通信基础: recvfrom函数 recvfrom 是一个用于接收数据的函数,,但 recvfrom 不仅接收数据,还可以获取发送数据的地址信息。 ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sock…

融资管理系统项目

系列文章目录 第一章 基础知识、数据类型学习 第二章 万年历项目 第三章 代码逻辑训练习题 第四章 方法、数组学习 第五章 图书管理系统项目 第六章 面向对象编程:封装、继承、多态学习 第七章 封装继承多态习题 第八章 常用类、包装类、异常处理机制学习 第九章 集…

指针的学习和理解

初级 1、指针的概念 在64位操作系统中,不管什么类型的指针都占8个字节 int a1; int* p&a;//p就是一个整型的指针,保存了a的地址2、指针和变量 int* p&a;* p100; // 等价于a100p //p&a*有两种定义: 定义的时候(前…

IP报文详解

IP的作用 上一篇文章提到TCP的可靠传输机制,那么TCP有把数据从主机A到主机B的能力吗?答案是没有。而IP有这个能力,IP能够将数据从主机A跨网络传输到主机B的能力。那么一定能传输成功吗?答案肯定是否定的,会因为各种原…

使用 Python构建 Windows 进程管理器应用程序

在这篇博客中,我们将探讨如何使用 wxPython 构建一个简单的 Windows 进程管理器应用程序。这个应用程序允许用户列出当前系统上的所有进程,选择和终止进程,并将特定进程保存到文件中以供将来加载。 C:\pythoncode\new\manageprocess.py 全部…

普元EOS-数据实体运行时动态增加property

1 前言 在Java开发读取数据的时候,一般都采用ORM方式将数据表的字段映射到实体对象中。 数据表中有一个字段,实体对象就有一个字段。 但很多时候,我们在读取的数据和显示的数据不同,比如,读取的是部门id&#xff0c…

探索数据结构:图(一)之邻接矩阵与邻接表

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:数据结构与算法 贝蒂的主页:Betty’s blog 1. 图的定义 **图(Graph)**是数学和计算机科学中…

这周末,除非外面下钞票,否则谁也拦不住我玩《黑神话悟空》(附:两款可以玩转悟空的显卡推荐)

主播说联播 | 从“十分之三”到“悟空”,国潮有何出圈密码? 《黑神话:悟空》里的中国古建取景地,在这里! 这周末,除非外面下钞票,否则谁也拦不住我玩《黑神话悟空》(附:两款可以玩转悟空的显卡推荐) 原创 IPBrain平台君 集成电路大数据平台 2024年08月22日 17:28 …

gif图片怎么压缩大小?深度测评7款动图压缩工具(内含教程)

gif图片在社交媒体和网络上非常流行,深受大家喜爱,因为它可以呈现生动的动画效果。gif动图之所以受到欢迎,主要因为其出色的压缩算法,能有效存储多个帧,从而实现流畅的动画。 然而,大多数社交媒体平台对gi…

[数据集][目标检测]集装箱缺陷检测数据集VOC+YOLO格式4127张3类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4127 标注数量(xml文件个数):4127 标注数量(txt文件个数):4127 标注…

全新分支版本!微软推出Windows 11 Canary Build 27686版

已经很久没有看到 Windows 11 全新的分支版本了,今天微软发布 Windows 11 Canary 新版本,此次版本号已经转移到 Build 27xxx,首发版本为 Build 27686 版。 此次更新带来了多项改进,包括 Windows Sandbox 沙盒功能切换到 Microsof…

关于智能编码助手【通义灵码】,开发者们这么说...

自通义灵码发布以来,不停地有开发者朋友为我们送上通义灵码的测评反馈。 关于通义灵码,开发者这样说 墨问西东 CEO 池建强&墨问研发团队 “通义灵码有一个强大的功能就是企业知识库检索增强,我们只需要上传团队的代码规范,…

[数据集][目标检测]快递包裹检测数据集VOC+YOLO格式5382张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):5382 标注数量(xml文件个数):5382 标注数量(txt文件个数):5382 标注…

【C语言小项目】五子棋游戏

目录 前言 一、游戏规则 1.功能分析 2.玩法分析 3.胜负判定条件 二、游戏实现思路 三、代码实现与函数封装 1.项目文件创建 2.头文件说明 3.函数封装 1)菜单实现 2)进度条实现 3)main函数实现 4)Game函数 5&#xff0…

TIM输出比较之PWM驱动LED呼吸灯应用案例

文章目录 前言一、应用案例演示二、电路接线图三、应用案例代码四、应用案例分析4.1 基本思路4.2 相关库函数介绍4.3 初始化PWM模块4.3.1 RCC开启时钟4.3.2 配置时基单元4.3.3 配置输出比较单元4.3.4 配置GPIO4.3.5 运行控制 4.4 PWM输出模块4.5 主程序 前言 提示:…