创建私有CA, 加密解密基础, PKI, SSL
发现了一篇图文并茂的超棒的 加密解密, CA, PKI, SSL 的基础文章, 链接如下:
https://blog.csdn.net/lifetragedy/article/details/52238057
简要描述一下概念:
PKI: Public Key Infrastructure, 公钥体系
包含, CA, RA, CRL,证书存取库
CA: 证书签发机构
RA: 证书注册机构
X.509是证书标准规范, 定义了证书的结构以及认证协议标准, 现在使用多为v3版本
SSL: Secure Socket Layer 安全的套接字层
TLS:Transport Layer Security 安全传输层协议
分层设计:1.最底层: 基础算法原语的实现, aes, rsa, md5
2.向上一层: 各种算法的实现
例如: aes-128-cdb-pkcs7
3.再向上一层: 组合算法实现的半成品
4. 用各种组件拼装而成的各种成品密码学协议/软件; 例如 tls, ssh
创建私有CA的简明操作:
操作环境: VMware 虚拟两台 CentOS 7.4, 两机互通
CA签发服务器为 192.168.142.128 --> CA server
申请CA签发的客户端为 192.168.142.135 --> CA client
证书申请及签署步骤:
- 生成申请请求
- RA核验
- CA签署
- 证书获得及发放
简明CA相关文件及目录:
- openssl默认配置文件: /etc/pki/tls/openssl.cnf --> 有必要的情况下可以修改, 一般不动
####################################################################
[ CA_default ] dir = /etc/pki/CA # Where everything is kept -->证书目录
certs = $dir/certs # Where the issued certs are kept -->证书存取库
crl_dir = $dir/crl # Where the issued crl are kept -->证书吊销列表
database = $dir/index.txt # database index file. -->数据库的索引文件
#unique_subject = no # Set to 'no' to allow creation of -->是否证书主体必须唯一
# several ctificates with same subject.
new_certs_dir = $dir/newcerts # default place for new certs. -->刚刚签完的证书放哪儿 certificate = $dir/cacert.pem # The CA certificate -->CA自己的证书
serial = $dir/serial # The current serial number -->证书的序列号
crlnumber = $dir/crlnumber # the current crl number -->吊销的证书的序列号
# must be commented out to leave a V1 CRL
crl = $dir/crl.pem # The current CRL -->当前正在使用的吊销的证书
private_key = $dir/private/cakey.pem# The private key -->CA自己的私钥
RANDFILE = $dir/private/.rand # private random number file x509_extensions = usr_cert # The extentions to add to the cert - 必要的文件及目录如下:
- # touch index.txt
-->数据库的索引文件
- # echo 1 > serial
-->证书的序列号
- openssl默认配置文件: /etc/pki/tls/openssl.cnf --> 有必要的情况下可以修改, 一般不动
创建私有CA步骤:
1. 在完成上面的文件创建后, 给CA自己发一个证明自己是CA的自签证书
在CA server完成
(umask ; openssl genrsa -out /etc/pki/CA/private/cakey.pem )
#生成4096位的RSA私钥,输出文件为 cakey.pem
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out cacert.pem
#以上述私钥为基准生成一个CA自签证书
自签证书时, 会要求你输入: 国家信息, 省份信息, 城市信息, 公司名称, 公司类型, 主机名, 管理邮箱; 处于测试目的, 我们随便填一下好了;
2.自签做完, CA server等于启动了; 转移到client虚拟机, 请求发证; 以httpd为例
(umask077; openssl genrsa -out /etc/httpd/ssl/httpd.key )
#生成密钥
openssl req -new -key /etc/httpd/ssl/httpd.key -days -out /etc/httpd/ssl/httpd.csr
#生成证书请求文件, 注意, 此处只是证书请求文件, 未经过CA签名认证
3. 发送证书申请书到CA server, 由CA server签名盖章后发回client
scp /etc/httpd/ssl/httpd.csr root@192.168.142.128:/tmp/
#发送到CA server 的/tmp目录下
以下为CA server操作
cd /tmp
ll -t
我们看到httpd.csr已经成功传送到CA server上来了
接下来, 就是对其签证的操作:
openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days
#生成证书, 并保存到CA server的证书目录下, 有效期为一年; 注意此处后缀为统一后缀
#
#查看证书中的信息:
# openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -text -subject
证书已签名, 发放给client
scp /etc/pki/CA/certs/httpd.crt root@192.168.142.135:/etc/httpd/ssl
证书成功发放
4.吊销证书
**首次吊销时需要操作** echo > /etc/pki/CA/crlnumber
在client获取要吊销的证书的serial编号 openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject
在CA server端对比检验 上述信息是否与 /etc/pki/CA/index.txt 文本中信息一致;
CA server操作吊销证书:
openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
更新证书吊销列表: openssl ca -gencrl -out THISCA.crl
至此私有CA发放完成, 注意此CA仅在互相任何的情况下才能生效;
CA证书的用法在后续随笔中会继续提到, 例如 httpd的https服务, 或者nginx的https服务等;
关于CA签发过程中的后缀:
- 私钥 *.key
- 公钥 *.pem
- 待申请证书 *.csr
- 证书 *.crt -->必须
创建私有CA, 加密解密基础, PKI, SSL的更多相关文章
- linux基础之加密解密、PKI及SSL、创建私有CA
加密解密基础 1. 对称加密: 加密和解密使用同一个密钥 常见的加密算法有:DES.3DES.AES.Blowfish.Twofish.IDEA.RC6.CAST5 特性: 1. 加密.解密使用同一个 ...
- openssl生成CA签署 及 加密解密基础
openssl 生成私有CA 及签署证书 openssl 配置文件: /etc/pki/tls/openssl.cnf 1. 在openssl CA 服务器端生成私钥 cd /etc/pki/CA/ ...
- 自签名证书和私有CA签名的证书的区别 创建自签名证书 创建私有CA 证书类型 证书扩展名【转】
自签名的证书无法被吊销,CA签名的证书可以被吊销 能不能吊销证书的区别在于,如果你的私钥被黑客获取,如果证书不能被吊销,则黑客可以伪装成你与用户进行通信 如果你的规划需要创建多个证书,那么使用私有 ...
- 创建私有CA并签发证书
一.创建私有CA 1.创建所需要的文件 2.创建私有密钥 3.CA自签证书 -new: 生成新证书签署请求: -x509: 专用于CA生成自签证书:不自签的时候不要加该选项 ...
- 使用 OpenSSL 创建私有 CA:3 用户证书
OpenSSL 创建私有 CA 三部曲:使用 OpenSSL 创建私有 CA:1 根证书使用 OpenSSL 创建私有 CA:2 中间证书使用 OpenSSL 创建私有 CA:3 用户证书 在前文&l ...
- 使用 OpenSSL 创建私有 CA:2 中间证书
OpenSSL 创建私有 CA 三部曲:使用 OpenSSL 创建私有 CA:1 根证书使用 OpenSSL 创建私有 CA:2 中间证书使用 OpenSSL 创建私有 CA:3 用户证书 本文将在前 ...
- 使用 OpenSSL 创建私有 CA:1 根证书
OpenSSL 创建私有 CA 三部曲:使用 OpenSSL 创建私有 CA:1 根证书使用 OpenSSL 创建私有 CA:2 中间证书使用 OpenSSL 创建私有 CA:3 用户证书 OpenS ...
- 加密解密(7)*PKI基础知识(完整)
PKI 基础知识 摘要 本白皮书介绍了加密和公钥基本结构(PKI)的概念和使用 Microsoft Windows 2000 Server 操作系统中的证书服务的基础知识.如果您还不熟悉加密和公钥技术 ...
- OpenSSL创建私有CA
1.编辑/etc/pki/tls/openssl.cnf [ CA_default ] dir = /etc/pki/CA # 工作目录certs ...
随机推荐
- Hibernate框架学习(五)——批量查询(概述)
一.HQL查询(Hibernate Query Language)多表查询,但不复杂时使用 Hibernate独家查询语言,属于面向对象的查询语言 1.基本查询 2.条件查询 注意:HQL语句中不可能 ...
- 页面加载通过javascript来修改控件属性
function changeFormElementStatus(tagNames) { var tagNameArr = tagNames.split("," ...
- CentOS 7.5安装pycharm
环境 安装环境: windows 10 Pro CentOS Linux release 7.6.1810 (Core) VMWare Workstation 15 Pro 安装图形化界面包 首先更新 ...
- [BOI2007]摩基亚
题目:洛谷P4390.BZOJ1176. 题目大意: 给你一个\(W\times W\)的矩阵,初始每个数都为\(S\).现在有若干操作: 1. 给某个格子加上一个值:2. 询问某个子矩阵的值的和:3 ...
- 小白神器 - 两篇博客读懂JavaScript (一基础篇)
JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理. 一. 编写格式 1, ...
- 洛谷 P1147 连续自然数和 (滑动窗口)
维护一个滑动窗口即可 注意不能有m到m的区间,因为区间长度要大于1 #include<cstdio> #define _for(i, a, b) for(int i = (a); i &l ...
- static和extern的作用域--题目
#include <stdio.h> ; int main(void) { , sum = , count = ; ,count++) // count = 2 { ; count++; ...
- 洛谷 P2298 Mzc和男家丁的游戏
P2298 Mzc和男家丁的游戏 题目背景 mzc与djn的第二弹. 题目描述 mzc家很有钱(开玩笑),他家有n个男家丁(做过上一弹的都知道).他把她们召集在了一起,他们决定玩捉迷藏.现在mzc要来 ...
- cocos2d-x ios游戏开发初认识(九) 音效、粒子系统与存储
我们知道.一个游戏少不了声音.一些好听的声音会提起你对游戏的兴趣,当然做好听的声音不是我们要学的,我们的目的是把声音在适当的时候放出来.顺便在这节中会说下简单的粒子系统和文件存储. 一.声音的播放: ...
- 百度分页效果之纯jsp版
数据库连接工具类 package com.gao.page.utils; import java.sql.Connection; import java.sql.DriverManager; publ ...