一、CA简介

CA是什么?CA是Certificate Authority的简写,从字面意思翻译过来是凭证管理中心,认证授权。它有点类似我们生活中的身份证颁发机构,这里的CA就相当于生活中颁发身份证的机构。不同于生活中的颁发机构,这里的CA是给服务器颁发证书。颁发证书的目的同生活中的办理身份证的目的类似,都是为了证明一件事,生活中的身份证可以证明我们是一个合法的公民,而服务器颁发证书的目的也是证明我们服务是一个合法的服务器,换句话说就是有了证书我们就可以清楚知道我们访问的服务器到底是不是我们真正想访问的服务器。从而识别我们访问的服务器的真假。

2.中间人攻击

如上图所示,我们在和对方服务器通信的过程,存在着中间人攻击的情况。所谓中间人攻击,就是攻击者站在通讯双方的中间,对于客户端它充当着服务器的角色,对于服务器端它又充当着客户端的角色。简单说它就是两边欺骗。当我们向服务器发起通信请求时,中间人会截获我们发向服务器端的报文,从而进行修改,然后把修改后的报文发送给服务端,服务端收到中间人篡改的数据报文,进行响应,把响应报文发送给中间人,然后中间人再发给客户端。这样一个过程就是中间人攻击的过程。可以看到客户端服务端双方直接通信是不安全的。如上图所示,通信双方交换密钥,直接交换就存在中间人欺骗,因为我们不能够确定远端服务器的真伪和客户端的真伪。为了解决这一问题,由此衍生出CA。CA在这里的充当的角色相当于中间人角色,不同的是CA是一个权威的中间人。它可以证明客户端和服务端的真伪。
众所周知常用的加密方式有三种,单向加密,对称加密,和非对称加密。单向加密从字面意思理解就是一方加密,在加密过程中不使用密钥,我们把单向加密也叫不可逆加密,通常用于验证文件的真假,或者验证文件是否改动,从而验证文件的完整性。常用的单向加密算法有md5,sha。对称加密讲的是加密和解密用的同一密钥。换句话说对称加密只有一个密钥,只要拿到对应的密钥就可以解密。常用的对称加密有des。非对称加密讲的是公钥加密私钥解密,私钥加密公钥解密,且公钥和私钥是一对,加密解密都需要的是一对密钥里的任意一个。这种加密比前两种更加安全和适用,缺点是加解密大文件速度慢
 了解了非对称加密的特性,我们再来说说它的过程。通信双方要进行非对称加密通信,前提是需要拿到对方的公钥,私钥放在各自手里,各自的公钥则存放在对方的手上。换句话讲,客户端需要拿到服务端的公钥,才能和服务端通信,服务端需要拿到客户端的公钥,才能主动和客户端通信。从而才可以实现非对称加密通信。那么客户端怎么得到服务端的公钥呢?如果客户端直接向服务端发送公钥,上面我们说过,这种方式存在中间人攻击,因为直接交换公钥是不都能确定对方身份的。这个时候就需要说说CA证书的作用了。
  证书里面存放了申请证书机构服务器的公钥和CA的信息以及有效期。通讯双方在建立加密通信的时候,需要验证证书的合法性,从而实现验证身份的目的。通常情况我们要验证证书的合法性就需要证书颁发机构的公钥来对证书解密,因为证书在颁发的时候,里面的公钥是通过颁发机构的私钥对其进行加密的。只要我们能够用颁发机构的公钥解开证书,那么就说明这个证书就是一个合法的证书,至少它证明了这个证书是权威机构(我们信任的)CA颁发的。同理通信双方要进行加密通信也是通过证书来获取密钥的。具体过程是这样的,客户端向服务端发起通信请求,服务端发送证书给客户端,客户端拿到证书进行解密,如果能够用信任CA机构的公钥解开,说明服务器发送过来的证书没有问题,然后把服务端公钥给存起来。客户端有了服务端的公钥后就可以向服务端发送用服务端的公钥加密的数据了,但是服务端没有客户端的公钥,它不能够用自己的私钥来加密数据发送给客户端,因为它的公钥是公开的,不光客户端上有服务端的公钥,中间人也有。所以为了确保数据的安全,客户端需要随机生成一个密码,然后通过服务器的公钥,把随机生成的密码加密后发送给服务端,服务端收到客户端发来的加密数据后,用自己的私钥解开,从而拿到客户端发来的随机密码,有了这个随机密码后,服务端就拿这个随机密码对称加密数据,然后发送给客户端。客户端收到服务端发送过来的加密报文,用刚才发送给服务端的随机密码解密,从而得到真正的数据。后续双方就是通过这个随机密码来加密解密传输数据。这里还需要说明的是,这个随机密码不是一直不变的,每隔一段时间后,客户端和服务端就会协商,重复上面的过程,生成新的随机密码进行加密解密通信。
  从上面的通信过程我们可以知道,证书的作用就是为了验证其服务器的真实合法性,以及传输服务端的公钥的作用。而服务器的公钥就是用来客户端向服务端发送随机密码,用来加密随机密码的作用,从而实现,只有服务端可以拿到这个随机密码的作用,实现安全加密通信。

四、CA服务器的实现

1.系统默认安装好的

yum install -y openssl

2、查看配置文件,以及匹配策略

目录 /etc/pki/tls/openssl.cnf 文件

3、创建CA自签名证书

3.1生成密钥   在192.168.6.129主机上模拟证书颁发机构

[root@Centos7 CA]# (umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)


3.2、签发自签名证书

[root@Centos7 CA]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 1000

填写对应的信息

颁发的证书为cacert.pem


3.3在CA目录下创建index.txt 创建对应的index.text文件 此文件用来记录申请的所有证书信息

[root@Centos7 CA]# touch index.txt

3.4创建serial 0F 表示证书的编号 15

[root@Centos7 CA]# echo 0F > /etc/pki/CA/serial

Cacert.pem 在linux 上是看不出里面的具体信息的,需要将cacert.pem 文件传送到window桌面上并且改名为后缀为.crt

传送桌面:

[root@Centos7 CA]# sz cacert.pem

桌面预览效果图


4、在客户端创建证书申请 在192.168.6.130主机上模拟客户端创建证书申请

4.1 生成私钥信息

[root@Centos7 ~]# cd root/
[root@Centos7 ssl]# (umask 077;openssl genrsa -out /root/ssl/app.key 2048)



4.2、生成证书申请文件

[root@Centos7 ssl]# openssl req -new -key app.key -out app.csr



4.3、在192.168.6.130上生成的证书申请传回给192.168.6.129证书颁发机构

传送文件到129.168.6.129主机上

[root@Centos7 ssl]# scp /root/ssl/app.csr 192.168.6.129:/data/



4.4颁发证书

[root@Centos7 data]# openssl ca -in app.csr -out /etc/pki/CA/certs/app.crt -days 365

说明:在跟客户端颁发证书的时候需要依赖两个文件/etc/pki/CA/index.txt和/etc/pki/CA/serial,前者文件主要存放已经颁发的证书信息,后者存放下一个将要颁发的证书的序列号。这里说一下/etc/pki/CA下的各个文件和目录的作用吧,certs目录存放颁发证书的目录,crl存放吊销证书列表文件的目录,index.txt.attr存放证书subject信息是否唯一的配置信息,index.txt.old存放上一次颁发证书的信息,newcerts目录存放已经颁发的证书,并且以序列号命名的证书,每颁发一次证书,在我们指定的路径下生成指定名称的证书后,newcerts目录下会自动生成一个以序列号为名称的证书,这个证书同我们指定路径下存放的证书信息一模一样。private目录存放私钥文件。serial.old存放上一次颁发证书的序列号。

颁布的证书存放目录


4.5将颁发的证书app.crt传送回给192.168.6.130即可

[root@Centos7 certs]# scp app.crt 192.168.6.130:/root/ssl/


Linux 搭建私有CA证书服务器之超详细版本相关推荐

  1. linux搭建SonarQube代码质量平台_Oracle 最新详细版本

    文章目录 一.最低配置要求 1. JDK版本要求 2. 数据库版本要求 3. 支持浏览器版本 二.软件下载安装 2.1. 软件列表总览 2.2. jdk11下载 2.3. sonarqube下载 2. ...

  2. Linux实现搭建私有CA服务器和证书申请颁发吊销

    利用Openssl搭建私有CA 目标是为了向内网用户颁发证书,方便内部用户得到彼此的公钥 搭CA服务器实际表现为准备好相关的文件 第一步:创建CA对应的文件夹 CentOS 7中已存在CA内容的对应文 ...

  3. linux搭建ca服务器搭建,linux下安装EJBCA 搭建私有CA服务器

    linux下安装EJBCA 搭建私有CA服务器 EJBCA是一个全功能的JAVA的CA系统软件,我们可以用此搭建私有CA服务器: 一:首先我的测试环境: 1.  linux mint18.3 62位: ...

  4. Centos7中创建RSA非对称密钥对及搭建私有CA并为客户端颁发证书

    Centos7中创建RSA非对称密钥对及搭建私有CA并为客户端颁发证书 1.在centos7中使用gpg创建RSA非对称密钥对 [13:32:55 root@centos7 data]#gpg --g ...

  5. [技能大赛-中职组-网络搭建与应用]2022江苏赛题答案-CA 证书服务--3

    前言: [技能大赛-中职组-网络搭建与应用]2022江苏赛题答案-CA 证书服务--3

  6. Openssl搭建私有CA认证

    概述 CA英文全称Certification Authority,即数字证书认机构.从广义上来说,CA是负责发放和管理数字证书的权威机构,并作为用户数字认证中受信任的第三方,承担公钥体系(PKI)中公 ...

  7. PKI详解与openssl实现私有CA证书签发

    加密解密技术基础 在看这篇文章之前,首先需要有加密解密的技术基础: 安全目标: 保密性:确保通信信息不被任何无关的人看到 完整性:实现通信双方的报文不丢失.数据完整性.系统完整性 可用性:通信任何一方 ...

  8. openssl搭建私有CA

    数据加密.CA.OpenSSL SSL security socket layer,安全套接字层 openssl (软件) 加密算法和协议: 对称加密:加密和解密使用同一密钥:(依赖于算法和密钥,其安 ...

  9. VMware+CentOS7搭建私有云桌面服务

    VMware+CentOS7搭建私有云桌面服务 1. 安装VMware虚拟机工作台 官网下载安装包 版本:14.1.3 Pro 地址:https://my.vmware.com/en/web/vmwa ...

最新文章

  1. RDKit | 天然产物的相似度评分(NP-likeness)
  2. 闪电网络真的是比特币最好的扩容解决方案吗?
  3. matlab 基础知识查漏
  4. ABAP 后台作业的一个状态查询工具
  5. java 获取mac地址 乱码_Java:开机获取Mac地址问题
  6. 高职计算机专业用什么软件,【计算机专业论文】高职计算机专业CAD软件教学思考(共4772字)...
  7. 用libtommath实现RSA算法
  8. 返回一个数组的连续子数组和的最大值
  9. System.Data.Sqlite批量添加数据
  10. 做游戏开发,选择Unity还是Unreal?
  11. VS(Visual Studio2017)快速入门基础操作(运行结果一闪而过,找不到解决方案资源管理器)
  12. gmap 支持python吗_在gmap中使用bokeh的python为for circle添加工具提示
  13. 计算机会计二级科目,(完整版)会计科目一览表(一级科目二级科目三级科目)..pdf...
  14. 美团后台开发面试经验
  15. zabbix仪表盘图形数据不更新
  16. 算法竞赛入门习题2-3倒三角
  17. U7 Ubuntu系统的U盘启动与安装-孙宇彤-专题视频课程
  18. Pinterest分享功能
  19. 论文降重方法有哪些?
  20. 进来试试这份字节跳动面试题,看看你能打几分

热门文章

  1. 小程序云开发服务器太慢,为什么微信小程序的云开发响应这么慢?
  2. 基于ROS与C++,只利用IMU实现里程计和计步器,精确计算行走距离
  3. 虚拟机(VMware)安装Centos后,网络配置(设定静态IP、本地主机与虚拟机互ping通)
  4. Linux上利用nginx搭建一个简单的rtmp视频流服务器(不涉及直播)
  5. Redis C客户端API
  6. 电脑怎么录屏并保存?您可以试试这3个方法
  7. 力扣 554. 砖墙
  8. IDEA访问不了官网?看过来!(超详!超细!)
  9. 【Android -- 开源库】FlowLayout 的基本使用
  10. 思考是否会增加大脑能量消耗?