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

一、OpenSSL:CA默认配置信息

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

建立私有CA方式如下:

小范围测试使用openssl、

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

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

[[email protected] 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,所以指定目录和文件名要和配置文件一致

2.生成CA自签证书;

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

[[email protected]
tmp]# man req

~]#
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参数实现自己发出请求,自己签署。非自签无需增加此参数

[[email protected]
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          # 第一次创建的时候需要给予证书序列号

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

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

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

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

演示环境:

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

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

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主机时候

2.生成证书签署请求

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

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

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

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

~]# scp 
/etc/httpd/ssl/httpd.csr 
[email protected]:/tmp/

4.在CA主机上签署证书

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

*.crt:表示证书文件

-days :签署证书的有效期

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

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

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

V:表示已经签署的

01:表示证书序列号

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

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

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

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

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

~]#  scp  /etc/pki/CA/certs/httpd.crt  [email protected]:/etc/httpd/ssl

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

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

2.CA主机吊销证书

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

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

吊销:

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

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

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

4.更新证书吊销列表

#
openssl  ca  -gencrl 
-out  thisca.crl

5.查看crl文件:

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

时间: 2024-08-07 08:18:51

OpenSSL:实现创建私有CA、签署证书请求详解的相关文章

Openssl加密文件及创建私有CA及证书

# cat /etc/redhat-release  CentOS release 6.6 (Final) # uname -r 2.6.32-504.el6.x86_64 首先我们先演示加密文件的方式: 拷贝一个文件到当前目录,使用openssl enc命令进行加密文件测试. 加密所用到的选项 # -e --> 加密选项 # -d --> 解密选项 # -des3 --> 选择加密的算法 # -a --> 基于文件进行编码 # -salt --> 自动添加杂质 # -in 

创建私有CA以及证书颁发详细步骤

准备两台主机,一台作为CA,IP地址为172.16.125.126:另一台作为用户,即证书请求的主机,IP地址为172.16.125.125. 在主目录为CA的相关信息就是CA所在主机.而主目录为ssl的相关信息就是客户机,即要使用到证书的主机. 第一步:在准备创建私有CA的主机上创建私有密钥:         [[email protected] CA]# cd /etc/pki/CA         [[email protected] CA]# (umask 077;openssl gen

14 Linux之openssl工具创建私有CA

证书的创建依赖加密算法,请看http://yunweigou.blog.51cto.com/6299641/1637108 前言,随着网络的发展,由于使用http协议通信的双方数据是明码格式的,故容易被其他网络主机盗取或偷换数据,无法对数据的安全提供保障.为保证数据的保密性及完整性,SSL问世 SSL:Secure Sockets Layer 安全套接字层 可理解为传输层和应用层之间的半层,对数据进行加密和解密 是Web浏览器与Web服务器之间安全交换信息的协议,提供两个基本的安全服务:鉴别与保

ssl协议、openssl及创建私有CA

在互联网发展早期,NetSpace公司发明了第一个浏览器及Web服务器.而http协议传输数据是明文的,为了基于加密的机制实现http,NetSpace公司在TCP层和应用层之间引入了半个层,这半层就是SSL.SSL不是一个软件,可以将它理解为一个库.当应用层的某种协议如果传输数据之前调用了SSL的功能,那么这个协议就实现了加密的功能.例如:http协议本身是不加密的,数据在应用层封装完之后本来应该交给传输层,但由于NetSpace在TCP层和应用层之间加入了SSL层,而SSL本身就是实现数据通

网络通信中的加密解密及openssl和创建私有CA详解

1.为什么网络通信要进行数据加密? 我们在网络进行通信时候,如果数据以明文的方式传输,在传输过程中,数据可以被篡改.窃听.伪装等,如图: 当A向B通信时,C可以在数据传输的过程,将数据进行抓包,例如应用wireshark抓包软件,就可以抓取通信的数据包,进行对抓到的内容进行分析,得出传输数据的内容. 2.数据加密方式有哪些? 从分类上划分,加密技术有四种: 1)对称加密 ◆ 对称加密:加密和解密使用同一个密钥 ·DES:Data Encryption Standard,56bits ·3DES:

https服务器的配置(三)创建私有CA和证书

首先在其他主机上创建一个私有的CA 假如我我现在就另外开一台虚拟机 登录进去 一.生存一对密钥(私钥和公钥,公钥可以在私钥中提取因此创建私钥就可以了) [[email protected] ~]#cd/etc/pki/CA [[email protected] CA]#(umask 077; opensslgenrsa –out private/cakey.pem 2048) 二.生成CA的证书 [[email protected] CA]# openssl req -new -x509-key

使用OpenSSL创建私有CA、签署证书

OpenSSL工具包是Linux上SSL v2/v3和TLS v1协议的实现方式之一,并建提供了常用的加密解密功能. OpenSSL主要由三部分组成: 1:libcrypto:加密库,主要用来实现加密.解密的功能库 2:libssl:实现SSL服务器端功能会话库 3:openssl命令行工具:/usr/bin/openssl 本文仅是介绍如何通过openssl命令创建私有CA,以及如何申请证书.签署证书等过程. 证书主要包含的就是拥有者自身的属性信息.公钥以及CA的签名,核心就是用户的公钥.服务

加密解密技术基础、PKI及创建私有CA

加密解密技术基础.PKI及创建私有CA 一.背景 随着互联网的快速发展,整个互联网中涌入了大量的用户,正所谓林子大了什么鸟都有,随之而来的就是数据的安全性得不到保障:因此就有了对数据的加密及解密. 二.安全的目标 1.目标: 信息加密的目的是为了确保所传输的信息具有保密性,不被其他人所劫持后篡改信息:如果被篡改后接收方也应该能知道,而且也应该确保没被劫持的信息接收方可以读取. 2.数据在网络中传输过程中要保证三个要点: (1)数据的完整性:防止数据在传输过程中遭到未授权用户的破坏或篡改. (2)

Openssl应用实例:创建私有CA并申请证书

一:实验环境 CA:centos6   172.17.252.226 客户端:centos7 172.17.252.188 二:阅读CA相关配置文件 CA配置文件路径:/etc/pki/tls/openssl.cnf 图一 图二 图三 三:证书申请及签署步骤 1.生成申请请求 2.RA核验 3.CA签署 4.获取证书 具体实验步骤 一:创建私有CA(certificate autrority  签证机构)    ##操作环境:centos6 1.创建所需要的文件  (如图一所示) ①生成证书索引