Linux基于OpenSSL实现私有CA构建

前言

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

数据加密解密过程

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

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

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

CA工作流程

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

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

实现CA构建

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

建立CA服务器

生成秘钥

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

自签证书

命令详解: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)修改

初始化工作环境

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

客户端申请证书

生成密钥

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

生成证书签署请求

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

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

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

CA签署证书

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

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

证书吊销

客户端获取证书serial

CA验证信息

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

CA吊销证书

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

CA更新证书吊销列表

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

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

The end

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

原文发布于微信公众号 - 马哥Linux运维(magedu-Linux)

原文发表时间:2015-04-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏会跳舞的机器人

记一次系统密码安全事故以及修改方案

运营人员反馈在晚上十一点多收到系统后台登录的短信验证码,第二天在后台的操作日志中发现自已的账号有被登录过后台系统,但实际上自已并没有登录操作,怀疑账号被他人恶意...

1512
来自专栏黑白安全

App渗透中常见的加密与解密

前言:本文主要介绍了目前App数据传输过程中几种常见的加密方式,以及一些常规的解密手段,并不涵盖并应对所有情况,在实战过程中还须具体情况具体分析,随机应变;同时...

2.3K1
来自专栏FreeBuf

揭秘Chimera勒索软件

概述 最近,我们曾发表过一篇关于Chimera勒索软件密钥泄漏的文章。但是在这篇文章中,我们将会披露更多相关的技术细节,我们将会给大家介绍如何利用这些泄漏出来的...

2135
来自专栏FreeBuf

BlackHat议题解析:Windows程序的数字签名校验“漏洞”

* 本文原创作者:维一零,本文属FreeBuf原创奖励计划,未经许可禁止转载 在今年的黑帽大会上,国外的一个安全研究员展示了如何通过Windows的数字签名by...

3177
来自专栏Albert陈凯

2018-11-22 Api接口加密策略

2.防篡改攻击(案例:在公共网络环境中,请求头/查询字符串/内容 在传输过程被修改)

3102
来自专栏听雨堂

.Net中DES加密的细节问题

一般的做法和MSDN都差不多,都是这种方式   加密:byte[]--write-->ms   解密:ms--read-->byte[]   即创建CryptS...

1889
来自专栏信安之路

突破封闭 Web 系统的技巧之正面冲锋

在互联网安全服务公司乙方工作的人或者进行 SRC 众测等相关渗透测试时,经常碰到客户只给一个 "xxx信息管理系统"、"xxx平台"之类的一个 Web 登录界面...

1130
来自专栏java一日一条

如何针对老旧浏览器设置 HTTPS 策略

几天前,一位朋友问我:都说推荐用 Qualys SSL Labs 这个工具测试 SSL 安全性,为什么有些安全实力很强的大厂家评分也很低?我认为这个问题应该从两...

3092
来自专栏我的小碗汤

发送手机验证码实现

但是刚才试了,第一次用官方提供的demo发送成功,然后整合到自己项目中,调试时由于参数配置错误导致发送了几次失败后,5次就用完了。按理说成功才能算一次,果断放弃...

1.1K2
来自专栏FreeBuf

一个纯JS脚本的文档敲诈者剖析(附解密工具)

0x00 概述 近日,腾讯反病毒实验室拦截到一个名为RAA的敲诈者木马,其所有的功能均在JS脚本里完成。这有别于过往敲诈者仅把JS脚本当作一个下载器,去下载和执...

5097

扫码关注云+社区

领取腾讯云代金券