Linux基于OpenSSL实现私有CA构建

简介:

前言

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

数据加密解密过程

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

wKioL1UhNSHSu49nAAGtv9OgDAc907.jpg

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

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

CA工作流程

wKiom1UhQB6SvZ6fAAFtj1aJO8g538.jpg

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

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

实现CA构建

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

建立CA服务器

生成秘钥

wKioL1UhK2vighXBAAEfeIsqwqM261.jpg

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

自签证书

wKiom1UhKkqggqGCAAJaf7CZFq8951.jpg

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
命令详解:
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)修改

初始化工作环境

wKioL1UhK7DTZMOIAACW1LCDgMo210.jpg

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

客户端申请证书

生成密钥

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

wKioL1UhQ9uyXeJ-AAD_MsmX-h0923.jpg

生成证书签署请求

wKioL1UhK-mSx2J2AAKAgJzojOY479.jpg

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

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

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

wKiom1UhKtngZwBmAABoYCLh2aQ260.jpg

 CA签署证书

wKiom1UhKvfB84JSAAMLWRfqpAg917.jpg

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

wKioL1UhLHCTNzjDAACO6yYHIgk310.jpg

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

证书吊销

客户端获取证书serial

wKiom1UhK1Oxa11lAACJiHbuWzA333.jpg

CA验证信息

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

wKioL1UhLK3D78P8AAB4ZgTFq4I099.jpg

CA吊销证书

wKioL1UhLL2g2HsKAAEQYLhL_uk947.jpg

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

wKiom1UhK4nj7Ia5AAAiIg9VCks136.jpg

CA更新证书吊销列表

wKioL1UhLNyCd9DeAABlxiCdUh0750.jpg

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

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

The end

本文转自 北城书生  51CTO博客,原文链接:http://blog.51cto.com/scholar/1629145



相关文章
|
2月前
|
JSON Kubernetes Linux
Linux环境签发CA证书和K8s需要的证书
Linux环境签发CA证书和K8s需要的证书
29 0
|
2月前
|
Linux 编译器 vr&ar
linux交叉编译一些常用依赖库util-linux,zlib,sqlite3,eudev ,openssl,libpng,glibc
linux交叉编译一些常用依赖库util-linux,zlib,sqlite3,eudev ,openssl,libpng,glibc
43 1
|
3月前
|
Ubuntu Linux 虚拟化
Linux下的IMX6ULL——构建bootloader、内核、文件系统(四)
Linux下的IMX6ULL——构建bootloader、内核、文件系统(四)
96 0
Linux下的IMX6ULL——构建bootloader、内核、文件系统(四)
|
1天前
|
Linux Shell C语言
Linux:自动化构建 - make
Linux:自动化构建 - make
7 1
|
1天前
|
存储 Ubuntu Linux
xenomai3+linux构建linux实时操作系统-基于X86_64和arm
Xenomai是一个实时性解决方案,通过在Linux上添加实时内核Cobalt来增强实时性能。它有三个主要部分:libcobalt(用户空间实时库)、Cobalt(内核空间实时内核)和硬件架构特定层(ipipe-core或dovetail)。ipipe-core适用于Linux 5.4以下版本,而dovetail用于5.4及以上版本。本文介绍了在X86 Ubuntu环境下,如何编译Xenomai内核,搭建应用环境,包括配置、编译、安装和实时性测试。对于其他硬件架构,如ARM和ARM64,步骤类似。文章还提到了Xenomai与Linux内核版本的兼容性和实时性测试结果。
10 0
xenomai3+linux构建linux实时操作系统-基于X86_64和arm
|
5天前
|
安全 Linux Android开发
FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库
该文介绍了如何在Linux服务器上交叉编译Android的FFmpeg库以支持HTTPS视频播放。首先,从GitHub下载openssl源码,解压后通过编译脚本`build_openssl.sh`生成64位静态库。接着,更新环境变量加载openssl,并编辑FFmpeg配置脚本`config_ffmpeg_openssl.sh`启用openssl支持。然后,编译安装FFmpeg。最后,将编译好的库文件导入App工程的相应目录,修改视频链接为HTTPS,App即可播放HTTPS在线视频。
FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库
|
10天前
|
Prometheus 监控 Cloud Native
构建高效可靠的Linux服务器监控体系
【4月更文挑战第30天】 在维护企业级Linux服务器的稳定性和性能方面,一个周全的监控体系是至关重要的。本文将探讨如何利用开源工具和实践构建一个高效、灵活且用户友好的监控系统。我们将重点讨论核心组件的选择、配置、报警机制以及数据分析方法,旨在帮助读者打造一个能够实时响应并预防潜在问题的监控环境。
|
10天前
|
负载均衡 网络协议 应用服务中间件
【亮剑】在Linux中构建高可用性和高性能网络服务的负载均衡工具HAProxy、Nginx和Keepalived。
【4月更文挑战第30天】本文介绍了在Linux中构建高可用性和高性能网络服务的负载均衡工具HAProxy、Nginx和Keepalived。HAProxy是一个高性能的开源TCP和HTTP负载均衡器,适合处理大量并发连接;Nginx是一个多功能Web服务器和反向代理,支持HTTP、HTTPS和TCP负载均衡,同时提供缓存和SSL功能;Keepalived用于监控和故障切换,通过VRRP实现IP热备份,保证服务连续性。文中详细阐述了如何配置这三个工具实现负载均衡,包括安装、配置文件修改和启动服务,为构建可靠的负载均衡系统提供了指导。
|
15天前
|
安全 应用服务中间件 网络安全
linux_nginx中添加ssl配置(open ssl)
linux_nginx中添加ssl配置(open ssl)
24 1
|
2月前
|
Shell Linux 编译器
Linux Makefile 全面教程:使用 Makefile 进行项目管理和构建
Linux Makefile 全面教程:使用 Makefile 进行项目管理和构建
43 0