频道栏目
首页 > 资讯 > 其他 > 正文

OpenSSL:实现创建私有CA、签署证书请求详解

16-01-09        来源:[db:作者]  
收藏   我要投稿

一、OpenSSL:CA默认配置信息

1.证书签发机构CA:公共信任CA、私有CA

建立私有CA方式如下:

小范围测试使用openssl、

大范围维护大量证书企业使用OpenCA(对openssl进行了二次封装,更加方便使用)

2.openssl 配置文件:/etc/pki/tls/openssl.cnf

[root@localhost tmp]# cat /etc/pki/tls/openssl.cnf

该配置文件中以 "[配置段]",的形式配置相关信息

===============================================================================================

==================================== openssl.cnf部分内容摘要=====================================

# OpenSSL example configuration file.

# This is mostly being used for generation of certificate requests.

######################################################################################

[ ca ] #CA相关配置段

default_ca= CA_default# The default ca section # 默认CA在[ CA_default ]配置

######################################################################################

[ CA_default ] # 默认当做CA的工作环境

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.颁发过的证书索引文件

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

 

# Comment out the following two lines for the "traditional"

# (and highly broken) format.

name_opt = ca_default# Subject Name options

cert_opt = ca_default# Certificate field options

 

default_days= 365# how long to certify for证书的默认有效期

default_crl_days= 30# how long before next CRL默认声明有效期

default_md= sha256# use SHA-256 by default默认的生成算法

preserve= no# keep passed DN ordering

####################################################################

[ req ] # 向CA证书签署发起注册请求相关属性

default_bits= 2048

default_md= sha256

default_keyfile = privkey.pem

distinguished_name= req_distinguished_name

attributes= req_attributes

x509_extensions= v3_ca# The extentions to add to the self signed cert

===============================================================================================

 

 

 

 

二、OpenSSL:创建私有证书签发机构CA步骤

在确定配置为CA的服务器主机上生成一个自签证书,并为CA提供所需要的目录及文件;

在真正的通信过程中CA服务器主机不需要网络参与,只需要参与到签名中,不需要提供服务

1.生成私钥;

~]# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)

因为在默认配置文件中默认配置/etc/pki/CA/private/cakey.pem,所以指定目录和文件名要和配置文件一致

wKioL1aPCOWTno1lAAHDWpax0Kw301.jpg

 

2.生成CA自签证书;

req - PKCS#10 certificate request and certificate generating utility,证书请求及生成工具;

[root@localhost tmp]# man req

wKiom1aPCL6xJ27aAADQWnrHrbY384.jpg

~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655

/etc/pki/CA/cacert.pem:配置文件中第一的目录及文件名称

-new:生成新证书签署请求;

-x509:生成自签格式证书,专用于创建私有CA时;

-key:生成请求时用到的私有文件路径;

-out:生成的请求文件路径;如果自签操作将直接生成签署过的证书;

-days:证书的有效时长,单位是day;

注意:

1)-key /etc/pki/CA/private/cakey.pem指明的是私钥的位置,知识因为此处会自动抽取出私钥中的公钥

2)req只能发起签署请求,需要加-x509参数实现自己发出请求,自己签署。非自签无需增加此参数

wKiom1aPCMjBB-SEAAPoGzliXHo264.jpg

[root@localhost tmp]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655

====================================填写证书请求相关信息=======================================

You are about to be asked to enter information that will be incorporated into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [XX]: # 两个字符表示的国家代码,CN为中国

State or Province Name (full name) []: # 省或洲的完整名称

Locality Name (eg, city) [Default City]: # 所在位置的名称(默认为城市)

Organization Name (eg, company) [Default Company Ltd]: # 组织机构名称(默认为公司)

Organizational Unit Name (eg, section) []: # 组织机构单元名称(eg.部门)

Common Name (eg, your name or your server's hostname) []: # 持有者名或者所在服务器主机名(即域名)

Email Address []: # 管理员邮件地址,可以省略

================================================================================================

 

3.为CA提供所需的目录及文件;

~]# mkdir -pv /etc/pki/CA/{certs,crl,newcerts} #当不存在时需要创建签发证书、吊销证书、新证书目录

~]# touch /etc/pki/CA/{serial,index.txt} #创建证书序列号文件、证书索引文件

~]# echo 01 > /etc/pki/CA/serial # 第一次创建的时候需要给予证书序列号

wKiom1aPCNGROuarAALaFb1jY-0436.jpg

 

 

 

 

三、OpenSSL;服务申请证书签署实现SSL安全通信

要用到证书进行安全通信的服务器,需要向CA请求签署证书;

需要签署的服务无需和CA证书签署机构主机在同一台服务器上。

此处以httpd服务为例进行演示,步骤如下:

演示环境:

httpd服务放置172.16.249.210主机(此处为rpm包安装)

wKioL1aPCQDDWkCEAAEYveFMHKI944.jpg

CA私有签机构放置172.16. 249.18主机:

wKioL1aPCQrwsRifAAIBzb8XPA0330.jpg

 

1.用到证书的服务器生成私钥;

~]# mkdir /etc/httpd/ssl

~]# cd /etc/httpd/ssl

~]# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048) # 生成私钥

生成httpd服务的私钥创建时候无需在/etc/pki/CA创建,/etc/pki/CA目录仅在创建CA主机时候

wKiom1aPCOThiloPAAGASNpnvNM524.jpg

 

2.生成证书签署请求

~]# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365

1) *.csr表示证书签署请求文件

2)要保证和签署机构CA签署机构信息一致

wKiom1aPCO3TjJrZAANreKGDHqE787.jpg

 

3.将请求通过可靠方式发送给CA主机

~]# scp /etc/httpd/ssl/httpd.csr root@172.16.249.18:/tmp/

wKioL1aPCRjDvPN2AACu_WHGEiM513.jpg

 

4.在CA主机上签署证书

~]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365

*.crt:表示证书文件

-days :签署证书的有效期

注意:此处需要自己去查看信息是否正确,并确定是否给予签署证书

wKioL1aPCSLiKmtaAAPZ6a-sqPs536.jpg

 

5.查看所签署的证书信息

方法一:~]# cat /etc/pki/CA/index.txt

wKiom1aPCPvjdxCfAAC8VggKWf0855.jpg

V:表示已经签署的

01:表示证书序列号

/C=CN/ST=Beijing/O=… ...: 表示主题信息(主题标示)

方法二:查看证书中的信息(CA或者服务端均可):

~]# openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject

-serial :序列号 -subject:主题信息

wKiom1aPCP-gmS13AADaLgDGKfE704.jpg

 

6.将CA签署机构的.crt证书发送给服务器

~]# scp /etc/pki/CA/certs/httpd.crt root@172.16.249.210:/etc/httpd/ssl

注意:第一次进行主机间基于ssh的scp操作会接收一个证书,Queue要你那认证

wKioL1aPCTDz4NpfAAIKbQcNO1s991.jpg

 

7.删除服务器和CA主机上签署前的*.csr文件,确保安全

httpd主机:~]# rm -rf /etc/httpd/ssl/httpd.csr

CA主机:~]# rm -rf /tmp/httpd.csr

四、OpenSSL:私有CA证书签署机构吊销证书

1.客户端获取要吊销的证书的serial(在使用证书的主机上执行)

~]# openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject

wKioL1aPCTTiBKRtAAGKNLOArLQ073.jpg

2.CA主机吊销证书

先根据客户提交的serial和subject信息,对比其与本机数据库index.txt中存储的是否一致;

在/etc/pki/CA/crets/*下生成证书后,会在/etc/pki/CA/newcrets/*以对应证书命名为SERIAL.pem文件存放

wKiom1aPCRPSaUfiAANKOGMJ9OQ686.jpg

吊销:

# openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem 其中SERIAL要换成证书真正的序列号:eg. 01.pem

wKioL1aPCUCQ72KSAAC-hpFwx2o912.jpg

3.生成吊销证书的吊销编号(第一次吊销证书时执行)

# echo 01 > /etc/pki/CA/crlnumber

wKiom1aPCRrx6JiSAAB1Kg9aYOk479.jpg

4.更新证书吊销列表

# openssl ca -gencrl -out thisca.crl

wKiom1aPCRyB8sqXAACEmF02TAg768.jpg

5.查看crl文件:

# openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text

相关TAG标签
上一篇:一起talk C栗子吧(第九十 三回:C语言实例--进程间通信之临界资源)
下一篇:浅析IRF虚拟化技术增强企业网络架构的弹性
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站