在Linux系统中实现CA

前言



CA是证书的签发机构,它是PKI的核心。CA是负责签发证书、认证证书、管理已颁发证书的机关。

它要制定政策和具体步骤来验证、识别用户身份,并对用户证书进行签名,以确保证书持有者的身份和

公钥的拥有权。。

CA 也拥有一个证书(内含公钥)和私钥。网上的公众用户通过验证 CA 的签字从而信任 CA ,任

何人都可以得到 CA 的证书(含公钥),用以验证它所签发的证书。

如果用户想得到一份属于自己的证书,他应先向 CA 提出申请。在 CA 判明申请者的身份后,便为他分

配一个公钥,并且 CA 将该公钥与申请者的身份信息绑在一起,并为之签字后,便形成证书发给申请

者。如果一个用户想鉴别另一个证书的真伪,他就用 CA 的公钥对那个证书上的签字进行验证,一旦验

证通过,该证书就被认为是有效的

一、CA端


认识CA配置文件:/etc/pki/CA

其中,certs表示存储签署证书;crl表示证书吊销列表;private表示私钥存储的位置。newcerts我们在

创建密钥对时,系统会自动生成证书列表,存储在newcerts目录下。

1、创建所需文件:

其中,index.txt表示生成证书索引数据库文件;serial表示下一次颁发证书的序列号,01表示颁发证书的

第一个序号为01。

2、CA生成自签署证书

生成密钥对:

生成自签证书:

其中 -new:表示生成新证书签署请求;

-x509:表示专用于CA生成自签证书;

-key:生成新证书签署请求时用到的私钥文件;

-days:表示证书的有效期,默认单位:年;

-out:表示生成的签署证书保存的位置;

我们可以导出该证书到Windows中看看。

二、CA-client端



认识CA配置文件:/etc/pki/tls ,该目录中的文件和/etc/pki/CA中的大体一样,只是后者是用作给

别人签署时的文件,前者是存放申请自签证书请求相关的文件。

1、生成私钥文件

这次我们选择不加密私钥文件,去掉了-des3选项。

2、生成证书申请文件

上述生成证书签署请求我们可以不指定证书的有效期,因为是CA给你颁发,时间是有CA决定的,所以我

在这里就没有写有效日期;其次,由于不是自签署证书,所以没有x509选项。

3、将证书签署请求文件传输至CA

使用scp命令进行远程复制时必须要保证两台主机都安装scp服务才可以,有一个没安装,复制都将失

败。scp服务所在的包为openssh包,使用yum -y install openssh-client安装,如果没有配置yum仓

库,请阅读博客:http://vinsent.blog.51cto.com/13116656/1962172

三、CA签署证书并发送给CA-client



之前将CA-client的证书申请传送给了CA,接下来CA便要签署该证书,给他盖个戳。

请仔细阅读证书中的内容,重点地方都标记出来了,如果没有问题那么CA-client的证书请求将签署

成功。你可以查看文件index.txt来查看其信息:

复制该证书至CA-client

[ [email protected] CA ]#scp certs/app.crt 172.18.252.50:/etc/pki/tls/certs

四、吊销证书



证书信息存储在index.txt文件中,我们要想吊销其中的证书,首先需要创建吊销列表的编号:

echo 01 > /etc/pki/CA/crlnumber。然后使用openssl命令在加上证书(该证书存储在/etc/pki/CA

/newcerts/01.pem)来吊销列表。例如:openssl ca revoke /etc/pki/CA/nercerts/01.pem

但是,我们光吊销了证书还不行,必须发布到CRL中才可,告知其他用户,该证书已经失效。使用命令

openssl ca -gencrl -out /etc/pki/CA/crl/crl.pem 更新吊销列表。你可以将该文件导出至Windows中

查看其吊销列表。

五、补充



假如你还想给另外的服务申请证书,由于之前生成过密钥对,那么你直接生成申请证书即可,

[ [email protected] tls ]#openssl req -new -key private/app.key -out app2.csr;然后重复上述步骤,

在签署一遍即可。在提供给大家几个查看证书信息的命令:

openssl x509 -in /etc/pki/CA/crts/app.crt -noout -text|issuer|subject|serial|dates

如果你还有一个主机,你想用上述的CA-client继续为其他主机签署证书,大体步骤与上述流程一

致,不过值得注意的是:你在生成证书subca.csr的时候不在是自己签署(即没有x509选项),你需要根

CA为你签署。

到此我们就完成CA证书的签署、当然了这只是实现CA的创建与签署,并没有加以使用,如果你有

相关的服务,例如:http。谢谢阅读~

时间: 2024-08-06 03:42:02

在Linux系统中实现CA的相关文章

Linux系统中的curl命令使用教程

这篇文章主要介绍了Linux系统中的curl命令使用教程,是Linux入门学习中的基础知识,需要的朋友可以参考下. 命令:curl在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具.语法:# curl [option] [url]常见参数:-A/--user-agent <string>              设置用户代理发送给服务器-b/--cookie

详述Linux系统中Apache网页与安全优化(二)

网页缓存 配置网页的缓存时间 通过mod_ expire模块配置Apache,使网页能在客户端浏览器缓存一段时间,以避免重复请求 启用mod_ expire模块后,会自动生成页面头部信息中的Expires标签和Cache-Control标签,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的 启用网页缓存功能步骤 查看是否安装mod_ expire模块 修改配置文件启用缓存功能 抓包测试 查看是否安装了mod_ expire模块 /usr/local/apache/bin/

老男孩教育每日一题-2017年5月11-基础知识点: linux系统中监听端口概念是什么?

1.题目 老男孩教育每日一题-2017年5月11-基础知识点:linux系统中监听端口概念是什么? 2.参考答案 监听端口的概念涉及到网络概念与TCP状态集转化概念,可能比较复杂不便理解,可以按照下图简单进行理解? 将整个服务器操作系统比喻作为一个别墅 服务器上的每一个网卡比作是别墅中每间房间 服务器网卡上配置的IP地址比喻作为房间中每个人 而房间里面人的耳朵就好比是监听的端口 当默认采用监听0.0.0.0地址时,表示房间中的每个人都竖起耳朵等待别墅外面的人呼唤当别墅外面的用户向房间1的人呼喊时

LINUX系统中动态链接库的创建与使用{补充}

大家都知道,在WINDOWS系统中有很多的动态链接库(以.DLL为后缀的文件,DLL即Dynamic Link Library).这种动态链接库,和静态函数库不同,它里面的函数并不是执行程序本身的一部分,而是根据执行程序需要按需装入,同时其执行代码可在多个执行程序间共享,节省了空间,提高了效率,具备很高的灵活性,得到越来越多程序员和用户的青睐.那么,在LINUX系统中有无这样的函数库呢? 答案是肯定的,LINUX的动态链接库不仅有,而且为数不少.在/lib目录下,就有许多以.so作后缀的文件,这

在Linux系统中文件(资源)和用户的管理

一个可执行二进制程序,被加载到内存,被内核调度到CPU上运行,这时候,就表现了一个进程.也可以说进程是程序的一个实例,是程序的动态表现. 在 Linux 系统中进程(process)是有属主的,也就是该进程以哪个用户的身份运行的.大家都知道,程序有输入和输出,也称这为程序IO.如果我们程序数据输入是磁盘.如,Web 服务器,接收用户的请求之后,把网页数据从磁盘中读入加工之后再把数据响应给用户.如果,发起Web 服务进程的用户没有读取该用户请求网页文件的权限.则无法响应用户的请求了.所以,文件(资

Linux系统中安装MySQL数据库操作手册

Linux系统中MySQL数据库安装手册 一.安装概述: 在Linux操作系统中安装MySQL数据库是一个我们必须要掌握的一门技术,也决定了你以后找工作的薪资待遇,所以你知道它的厉害了吧!学会安装只是第一步,你还得学好数据库的基本操作,以及搭建一个数据库的主从配置等等.这些我都会在后面的博文中说到.下面我就简单的写一些安装MySQL数据库的一些步骤,仅供参考,如有什么不妥的地方,还请见谅! 二.安装步骤: (一)基本准备工作 1.打开虚拟机,在虚拟机中下载好最新版的MySQL数据库的压缩包.在M

学习Linux系统中命令的简单方法

如果说如何快速学习.了解Linux的话,我的答案是学命令.背命令!为何呢?对于一名新手来说,去学习Linux的思想.了解Linux的架构.明白Linux中"一切皆文件"概念虽然说是没有错,是对的.但是个人认为去学习这些"高大上"的东西不是一时半会的事儿,它需要一定的时间和经验去沉淀才能掌握.那么如何最快速了解Linux并使用呢?我依然觉得学命令.背命令,掌握命令是比较笨但却是比较快的方式. 我开始学习Linux的时候,问了前辈:我入门Linux需要掌握哪些命令呢?前

LINUX系统中LV动态扩容

LINUX系统中LV扩容 服务器:192.168.26.209 扩容数据盘:原来服务器存储配置信息 df -h df –h 增加一个硬盘,扩容20G 启动服务器,系统已经识别新硬盘设备. 创建PV: [[email protected] ~]# pvcreate /dev/sdc [[email protected] ~]# pvs 先扩展VG: [[email protected] ~]# vgextend vg_centos /dev/sdc [[email protected] ~]# p

Linux系统中“动态库”和“静态库”那点事儿 /etc/ld.so.conf 动态库的后缀为*.so 静态库的后缀为 libxxx.a ldconfig 目录名

Linux系统中“动态库”和“静态库”那点事儿 /etc/ld.so.conf  动态库的后缀为*.so  静态库的后缀为 libxxx.a   ldconfig   目录名 转载自:http://blog.chinaunix.net/uid-23069658-id-3142046.html 今天我们主要来说说Linux系统下基于动态库(.so)和静态(.a)的程序那些猫腻.在这之前,我们需要了解一下源代码到可执行程序之间到底发生了什么神奇而美妙的事情. 在Linux操作系统中,普遍使用ELF格