实现CA证书创建及客户端申请证书
author:JevonWei
版权声明:原创作品
CA证书的相关文件路径
openssl配置文件/etc/pki/tls/openssl.cnf
/etc/pki/tls/openssl.cnf
CA相关文件都在/etc/pki/CA/目录下
/etc/pki/CA/cert 存放发布证书
/etc/pki/CA/crl 证书吊销列表
/etc/pki/CA/index.txt 证书编号等索引数据库文件
/etc/pki/CA/newcerts 新颁发证书存放目录
/etc/pki/CA/cacert.pem CA服务端的自签名证书
/etc/pki/CA/serial 下一个将要颁发证书的序列号
/etc/pki/CA/crlnumber 吊销证书的编号
/etc/pki/CA/crl.pem 吊销证书存放的文件
/etc/pki/CA/private/cakey.pem 证书的私钥文件 policy = policy_match/policy_anything
[ policy_match ] (match意为必须匹配,optional为可选,也可不匹配)
countryName = match \\国家地点
stateOrProvinceName = match \\省/州地区
organizationName = match \\ 公司部门
organizationalUnitName = optional
commonName = supplied
emailAddress = optional [ policy_anything ] (不强制信息对应匹配)
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
创建CA证书及客户端申请证书
主机A为CA服务端,主机B为客户端申请CA
主机A
创建所需要的文件
[root@danran app]# touch /etc/pki/CA/index.txt 生成证书的索引数据库文件
[root@danran app]# echo 01 > /etc/pki/CA/serial 指定第一个颁发证书的序列号,序列号必须为两位,且序列号是十六进制存储
CA自签证书
生成私钥文件
(umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048) 小括号开启子进程,umask修改umask值从而修改私钥文件的权限,2018为加密位数,genrsa为rsa加密算法 生成自签名证书
openssl req -new -x509 –keys /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem
req 请求
-new:生成新证书签署请求
-x509:专用于CA生成自签证书
-key:生成请求时用到的私钥文件
-days n:证书的有效期限
-out 输出CA自签名文件
如下图,依次输入申请CA证书的国家、省份地区、所在城市、公司、部门、服务主机名及Email地址,根据/etc/pki/tls/openssl.cnf配置文件的中的policy = policy_match/policy_anything策略的不同, 有些选项必须要写且匹配,则有些选项可省略不写或信息不需匹配,再此/etc/pki/tls/openssl.cnf配置文件的中的policy策略为:policy = policy_match,则要求国家、省份、公司信息必须填写且信息一致
查看自签名证书的信息
openssl x509 -in /etc/pki/CA/cacert.pem -noout -text
主机B
生成私钥文件
(umask 066;openssl genrsa -out /app/service.key 2048) 小括号开启子进程,umask修改umask值从而修改私钥文件的权限,2018为加密位数,genrsa为rsa加密算法,私钥文件存放路径不唯一,再此试验中将私钥文件存放于/app目录下命名为service.key
使用私钥文件创建证书申请文件
req -new -key /app/service.key -out /app/service.csr 根据/app/service.key私钥文件生成证书申请文件并存放在/app/service.csr
如下图,依次输入所在国家、省份州、城市等地区及公司、部门、需要申请证书的web服务域名、Email地址、加密口令和公司可选项,根据/etc/pki/tls/openssl.cnf配置文件的中的policy = policy_match/策略,国家,省份、公司信息必须与CA服务端填写的信息一致
将证书申请文件/app/service.csr传送给CA服务端
scp /app/service.csr 192.168.198.134:/etc/pki/CA/csr 复制/app/service.csr证书申请文件到/etc/pki/CA/csr目录下,/etc/pki/CA/csr路径不是唯一的,可自定义
主机A
CA签署证书,将证书颁发给请求者
openssl ca -in /etc/pki/CA/csr/service.csr -out /etc/pki/CA/certs/service.crt -days 10 根据/etc/pki/CA/csr/service.csr证书的申请文件从而颁发证书并将证书存放在/etc/pki/CA/certs/service.crt中,指定证书的有效期为10天
查看/etc/pki/CA下的文件
tree /etc/pki/CA/
ll /etc/pki/CA/certs/service.crt /etc/pki/CA/newcerts/01.pem 证书的路径/etc/pki/CA/certs/service.crt和/etc/pki/CA/newcerts/01.pem是完全相同的
查看证书数据库中的信息
cat /etc/pki/CA/index.txt
查看证书信息
openssl -x509 -in /etc/pki/CA/certs/service.crt -noout -text
主机B再次为新的web服务申请证书
主机B
生成新的证书申请文件
申请过证书的主机,若需要再次为某个新的web服务申请证书,则不需要再次生成新的秘钥,使用之前申请证书的秘钥再次申请新的证书即可,秘钥的路径为/app/service.keyopenssl req -new -key /app/service.key -out /app/service2.csr
根据/etc/pki/tls/openssl.cnf配置文件的中的policy = policy_match配置文件的此策略可知,Country Name、State or Province Name、Organization Name此三项输入信息必须跟CA服务端的信息对应匹配,若有一项信息输入不匹配,则CA颁发证书时将提示错误信息不予颁发,键入信息如下图

将证书申请文件/app/service2.csr传送到CA服务端
scp /app/service2.csr 192.168.198.134:/etc/pki/CA/csr
主机A
根据主机B的证书申请文件为此颁发CA证书
openssl ca -in /etc/pki/CA/csr/service2.csr -out /etc/pki/CA/certs/service2.crt -days 30 \\证书有效期为30天
由于证书申请文件的Country Name、State or Province Name输入信息与CA服务端的信息不对应匹配,故证书颁发失败,如下图

- 若想证书继续颁发,有以下三种解决方法
证书申请者主机B重新生成证书申请文件,然后转送给CA服务端
openssl req -new -key /app/service.key -out /app/service2.csr
CA服务端将/etc/pki/tls/openssl.cnf配置文件的中的policy = policy_match策略中的countryName、stateOrProvinceName选项修改为optional
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional 修改为
[ policy_match ]
countryName = optional
stateOrProvinceName = optional
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
CA服务端将/etc/pki/tls/openssl.cnf配置的文件的policy = policy_match修改为policy = policy_anything,policy_anything即为任何选项都不需要 必须匹配,如下图
修改为
CA服务端根据证书申请文件重新为申请者颁发证书
openssl ca -in /etc/pki/CA/csr/service2.csr -out /etc/pki/CA/certs/service2.crt -days 30
查看颁发证书的信息
openssl x509 -in /etc/pki/CA/newcerts/01.pem -noout -text \\-text以文本的方式查看
查看证书数据库的数据信息
[root@danran CA]# cat /etc/pki/CA/index.txt
V 170726140620Z 01 unknown /C=CN/ST=henan/O=mage/OU=24/CN=www.danran.com
V 170816022756Z 02 unknown /C=US/ST=NewYork/L=ny/O=danran.com/OU=24/CN=www.Jevon.com 颁发新的证书时,同时为旧的证书做备份
[root@danran CA]# cat /etc/pki/CA/index.txt.old
V 170726140620Z 01 unknown /C=CN/ST=henan/O=mage/OU=24/CN=www.danran.com 设定subject(服务主机域名)是否唯一,默认subject必须唯一
[root@danran CA]# cat /etc/pki/CA/index.txt.attr
unique_subject = yes 证书的索引编号信息
[root@danran CA]# cat /etc/pki/CA/serial
03
[root@danran CA]# cat /etc/pki/CA/serial.old
02
openssl x509 -in /etc/pki/CA/cacert.pem -noout -text|issuer|subject|serial|dates 查看证书中的信息,如发布者、标题、序列号、时间等
主机B重新生成一个主机域名为www.danran.com的证书申请文件
主机B生成证书申请文件,并传送给CA服务端
openssl req -new -key /app/service.key -out /app/service3.csr
scp /app/service3.csr 192.168.198.134:/etc/pki/CA/csr
CA服务端为第二个subject为www.danran.com的服务域名颁发证书,则颁发失败
openssl ca -in /etc/pki/CA/csr/service3.csr -out /etc/pki/CA/certs/service4.crt -days 30
证书颁发失败的原因
unique_subject = yes \\意为完全相同的证书申请文件不能申请两个证书
修改/etc/pki/CA/index.txt.attr文件中的unique_subject = no 即可不检查唯一性,实现由一份申请文件申请两个证书
[root@danran CA]# cat /etc/pki/CA/index.txt.attr
unique_subject = no
CA为主机B重新生成一个www.danran.comde证书
openssl req -new -key /app/service3.key -out /app/service4.csr
scp /app/service3.csr 192.168.198.134:/etc/pki/CA/csr
ll /etc/pki/CA/certs/service2.crt /etc/pki/CA/certs/service4.crt \\比较两个证书文件即相同
吊销证书
CA服务端取消06.pem证书
openssl ca -revoke /etc/pki/CA/newcerts/06.pem
查看证书数据库中的06.pem证书状态
cat /etc/pki/CA/index.txt
指定第一个要吊销证书的编号
第一次更新证书吊销列表前才需要执行,/etc/pki/CA/crlnumber第一次需要新建
echo 01 > /etc/pki/CA/crlnumber
更新证书吊销列表(吊销证书路径/etc/pki/CA/crl.pem)
ca -gencrl -out /etc/pki/CA/crl.pem
查看吊销证书的信息
openssl crl -in /etc/pki/CA/crl.pem -noout -text


openss命令
http://www.cnblogs.com/JevonWei/p/7193781.html
实现CA证书创建及客户端申请证书的更多相关文章
- Makecert.exe(证书创建工具)
Makecert.exe(证书创建工具) .NET Framework 4.5 其他版本 2(共 3)对本文的评价是有帮助 - 评价此主题 证书创建工具生成仅用于测试目的的 X.509 证 ...
- C#程序证书创建工具 (Makecert.exe)
原文地址:https://msdn.microsoft.com/zh-cn/library/bfsktky3(VS.80).aspx 证书创建工具生成仅用于测试目的的 X.509 证书.它创建用于数字 ...
- Centos7创建CA和申请证书
转载:http://rackie386.blog.51cto.com/11279229/1947999 Centos7.3创建CA和申请证书 openssl 的配置文件:/etc/pki/tls/op ...
- Centos7创建CA和申请证书 转自https://www.cnblogs.com/mingzhang/p/8949541.html
Centos7.3创建CA和申请证书 openssl 的配置文件:/etc/pki/tls/openssl.cnf 重要参数配置路径 dir = /etc/pki/CA ...
- 使用 OpenSSL 为 Nginx 创建自签名证书 并开启客户端身份验证
本文章默认读者了解Openssl,CA,网站证书相关知识,直接实战!配置完成后,浏览器会显示"安全的HTTPS"连接.不会像其他文章那样,是红色警告的证书提示. 准备环境 笔者使用 ...
- 自签名证书和私有CA签名的证书的区别 创建自签名证书 创建私有CA 证书类型 证书扩展名【转】
自签名的证书无法被吊销,CA签名的证书可以被吊销 能不能吊销证书的区别在于,如果你的私钥被黑客获取,如果证书不能被吊销,则黑客可以伪装成你与用户进行通信 如果你的规划需要创建多个证书,那么使用私有 ...
- 利用CA私钥和证书创建中间CA
本文借助实验环境下创建的root CA私钥和证书进一步创建中间CA.为了便于区分,我们将创建中间CA(intermediate CA)的CA称为根CA(root CA). 关于如何使用OpenSSL创 ...
- 加密解密(3)Bob到CA申请证书过程
网络安全中最知名的人物大概就是Bob和Alice了,因为很多安全原理阐述中都用这两个虚拟人物来进行实例说明. 我们来看看Bob是怎么从CA中心获得一个数字证书的: 1.Bob首先创建他自己的密钥对(k ...
- 使用非Web方式从CA申请证书
背景介绍:关于从CA申请证书这点事,网上的那些教程基本都是让我们通过访问https://server/certsrv这样的网页来操作的,我一直希望不依赖IIS就把这事干了,于是就有了下面的文章. 1. ...
随机推荐
- GateSvr的设计2
我们的目标是:1.业务Server集群部署,从网关发来的请求处理,程序自动找一台空闲的业务Server来处理这个请求,并将结果异步分发到服务网关,从而Push给客户端:2.一套业务Server挂了不会 ...
- PHPsthdy+xdebug
PHPsthdy下载后查看phpinfo后会发现没有xdebug这一项: 1.phpStudy集成了XDebug扩展,所以不用单独下载XDebug. 2.打开XDebug扩展:右击PHPstudy的图 ...
- JAVA多线程之Synchronized关键字--对象锁的特点
一,介绍 本文介绍JAVA多线程中的synchronized关键字作为对象锁的一些知识点. 所谓对象锁,就是就是synchronized 给某个对象 加锁.关于 对象锁 可参考:这篇文章 二,分析 s ...
- 移动APP云测试平台测评分析
随着智能手机的普及率和渗透率越来越高,App开发软件也越来越多.有专家预测,2017年的App应用下载量将会突破2500亿,整个移动科技市场规模将会达到770亿美元.身处在这个"移动&quo ...
- Samba服务部署
Samba,是种用来让UNIX系列的操作系统与微软Windows操作系统的SMB/CIFS(Server Message Block/Common Internet File System)网络协议做 ...
- 电脑只能上QQ,不能上网浏览网站怎么解决
这个问题通常是因为网络的DNS解析出错引起的.QQ一类的聊天软件有自动的网络解析,不需要DNS便可以使用,而一般的浏览器是需要DNS解析来访问网页的.所谓DNS,即域名服务器(Domain Name ...
- Python 发展历史
1. Python发展历史 起源 Python的作者,Guido von Rossum,荷兰人.1982年,Guido从阿姆斯特丹大学获得了数学和计算机硕士学位.然而,尽管他算得上是一位数学家,但他更 ...
- 笨办法用js屏蔽被http劫持的浮动广告
最近发现网站经常在右下角弹出一个浮动广告,开始的时候以为只是浏览器的广告. 后来越来越多同事反映在家里不同浏览器也会出现广告.然后深入检查了下,发现网站竟然被劫持了. 然后百度了一大堆资料,什么htt ...
- 【模板】HDU--1233 畅通工程
省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出了有可能建设公路的若干 ...
- C互质个数
C互质个数 Time Limit:1000MS Memory Limit:65536K Total Submit:55 Accepted:27 Description 贝贝.妞妞和康康都长大了,如今 ...