Linux基于OpenSSL实现私有CA构建

前言

随着互联网的迅猛发展,网络通信已经成为传递信息的主要途径。而通信时的数据传输大部分却是明文传输的,在网络这个不安全的环境下,如果没有一套数据加密机制,就会导致敏感信息和重要数据泄露,引起不可估量的损失。而OpenSSL正好弥补了这一缺憾,那什么是OpenSSL呢?OpenSSL是一套强大的具有加密功能的组件,它包含libcrypto(公共加密库)、libssl(SSL协议的实现)和openssl(多功能命令工具),因其开源思想,现已广泛应用于数据通信加密领域。OpenSSL还可在局域网内构建私有CA,实现局域网内的证书认证和授权,保证数据传输的安全性。如何构建私有CA呢?本文将详细讲述基于OpenSSL实现私有CA构建。

数据加密解密过程

数据加密需要实现的功能:数据私密性,数据完整性,身份认证和秘钥交换。

1.jpg

加密类型及功能:
单向加密:提取数据特征码,实现数据完整性验证
对称加密:数据加密,实现数据私密性
公钥加密:使用对方公钥加密,实现秘钥交换
          使用自己私钥加密,实现身份验证

公钥在网络传输过程中,无法保证可信度,容易被窃取或伪装,所以我们就需要一个受信任的第三方机构(CA)

CA工作流程

2.jpg

#A和B各自用CA的公钥解密对方证书,完成身份验证

由于CA支持在互联网上价格不菲,所以在企业内,不牵涉外网通信前提下,完全自行构建一个局域网内的私有CA.

实现CA构建

OpenSSL可以构建适用于中小型企业的私有CA,如果需要在大型企业构建CA可以用OpenCA,有兴趣可以自行Google,这里就不做详解了,因为OpenSSL足以满足大多数需求。

建立CA服务器

生成秘钥

3.jpg

命令详解:
umask 077:保证秘钥文件其他人无读写权限,在()内执行,只对当前子shell有效
-out /path/to/somefile:指定生成秘钥位置   
2048:秘钥长度,可自定义
#openssl rsa -in private/cakey.pem -pubout -text  可提取公钥

自签证书

4.jpg

命令详解:
req: 生成证书签署请求
     -news: 新请求
     -key /path/to/keyfile: 指定私钥文件
     -out /path/to/somefile: 指定生成证书位置
     -x509: 生成自签署证书
     -days n: 有效天数
     
#Country Name (2 letter code) [XX]:CN                          #国家(大写缩写)
#State or Province Name (full name) []:Shandong                #省份或洲
#Locality Name (eg, city) [Default City]:Qingdao               #城市
#Organization Name (eg, company) [Default Company Ltd]:Scholar #公司
#Organizational Unit Name (eg, section) []:Tech                #部门
#Common Name (eg, your name or your server's hostname) []:ca.scholar.com
#必须与证书所有者能解析到的名字保持一致,否则将无法通过验证
#Email Address []:ca@scholar.com                               #邮箱
#以上操作默认选项可通过修改配置文件(/etc/pki/tls/openssl.cnf)修改

初始化工作环境

5.jpg

命令详解:
index.txt:证书缩影数据库
serial:签署证书编号文件
echo 01 > serial #设定编号初始值

客户端申请证书

生成密钥

#我们给web服务生成请求用于https,在其配置文件目录创建用于保存私钥和证书的目录

6.jpg

生成证书签署请求

7.jpg

#A challenge password []:   #证书请求需要加密存放,如果添加密码,需要将密码一同给CA
#An optional company name []:

将签署请求文件发送给CA服务器

#CA服务器工作目录下,手动创建了一个存放证书请求的目录(存放目录请随意)

8.jpg

 CA签署证书

9.jpg

将签署的证书发送给请求者

10.jpg

这样客户端就可以配置使用CA签署的证书,进行加密通信了。如果客户端的私钥不慎丢失,或者证书过期了该怎么办呢?接下来我们看一下证书怎么吊销吧。

证书吊销

客户端获取证书serial

11.jpg

CA验证信息

根据节点提交的serial和subject信息来验正与index.txt文件中的信息是否一致

12.jpg

CA吊销证书

13.jpg

CA生成吊销证书编号(第一次吊销)

14.jpg

CA更新证书吊销列表

15.jpg

#如果有需要,可查看crl文件的内容
#openssl crl -in /path/to/crlfile.crl -noout -text

好了,证书成功吊销,可以重新申请了。

The end

以上便是基于OpenSSL构建私有CA的步骤了,实际效果请自行测试,这里我就不做解析测试了。仅为个人学习整理,如有错漏,大神勿喷~~~

原创文章,作者:书生,如若转载,请注明出处:http://www.178linux.com/2704

(0)
书生书生
上一篇 2015-04-13 10:06
下一篇 2015-04-13 10:10

相关推荐

  • 第一周博客作业

    1、描述计算机的组成及其功能。
    2、按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。
    3、描述Linux的哲学思想,并按照自己的理解对其进行解释性描述。
    4、说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相应的示例来阐述。
    5、如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章节是如何划分的。
    6、请罗列Linux发行版的基础目录名称命名法则及功用规定

    Linux干货 2018-03-13
  • Linux系统时间简单修改方法

          Linux时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟。系统时钟是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的时钟,这个硬件时钟可以在BIOS中进行设置。Linux中的所有命令(包括函数)都是采用的系统时钟设置。Linux操作系统运行…

    Linux干货 2015-06-12
  • 在CentOS中获取命令帮助

    在CentOS中获取命令帮助    在使用和学习CentOS系统中,当我们遇上不熟悉的命令却又需要了解它的详细用法的时候,我们需要获取帮助。除了借助他人和搜索引擎之外,自己通过查看系统帮助文档来解决问题是很重要的。下面就来介绍如何获取帮助以及简单的解决思路:    一、如何获取命令帮助 Linux提供多层次的命令帮助:…

    Linux干货 2016-07-27
  • linux系统启动及kickstart

    1、简述linux操作系统启动流程
    2、简述grub启动引导程序配置及命令行接口详解
    3、实现kickstart文件制作与光盘镜像制作

    2018-01-17
  • LVS的详细应用

    LVS是Linux Virtual Server的简写, 意思是Linux虚拟服务器, 是一个虚拟的服务器集群系统. LVS的宗旨:    1. 使用集群技术和Linux操作系统实现一个高性能, 高可用的服务器;    2. 很好的可伸缩性(Scalability);    3. 很好的可靠性(Re…

    Linux干货 2016-12-05
  • Shell脚本-循环基础

    Shell脚本-循环基础 背景: 正在学习Shell脚本之循环,发现Shell的循环和其他编程语言大同小异,逻辑上都是相通的,但在使用格式上却有点不同,在学习完Shell循环后,将学习的心得体会记录下来,以备今后复习。 介绍: 什么是Shell脚本:       shell script是利用shell的功能…

    2017-08-26

评论列表(2条)

  • 瓶云
    瓶云 2015-06-17 06:29

    书生,你这个图画的很溜啊 :smile:

    • 书生
      书生 2015-06-20 12:32

      @瓶云:mrgreen: :mrgreen: :mrgreen: