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

一、OpenSSLCA默认配置信息

    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 keyCA自己的私钥

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

        注意:第一次进行主机间基于sshscp操作会接收一个证书,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

Nicolo:http://xuding.blog.51cto.com/4890434/1732751

原创文章,作者:Nicolo,如若转载,请注明出处:http://www.178linux.com/15729

(0)
NicoloNicolo
上一篇 2016-04-30
下一篇 2016-05-01

相关推荐

  • IP地址的划分及优化

    IP地址定义:互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,所以它可以唯一标识IP网络中的每台设备,同时没台主机(计算机,网络设备,外围设备)必须具有唯一的地址。 IP地址相比于MA…

    Linux干货 2017-07-02
  • 脚本及变量解析

    bash脚本编程 脚本文件格式: 第一行顶格:#!bin/bash  (shebang) 注释信息:以#开头 代码注释:好的程序员必备 适量的添加缩进或添加空白行以示分割 语言:编程语言格式:库,算法和数据结构 编程思想:      能够把学到的编程语言的语法格式随时转换为解决问题的思路     &…

    Linux干货 2016-08-12
  • 文件查找与解压缩

    文件查找 脚本文件名的查询 which(寻找执行文件) which [-a] command -a :将所有由PATH目录中可以找到的命令均列出,而不只是第一个被找到的命令名称 文件名的查找 文件查找:实时查找:遍历所有文件进行条件匹配;(find)非实时查找:根据索引查找;(whereis、locate) whereis whereis [-bmsu] […

    Linux干货 2017-04-08
  • kickstart 的使用!

    简介 1.什么是kickstart KickStart是一种无人职守安装方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的文件;在其后的安装过程中(不只局限于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找KickStart生成的文件,当找到合适的参数时,…

    Linux干货 2016-11-03
  • N22第八周作业

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 网桥: 网桥是早期的二层网络设备,每个端口分别有一条独立的交换信道,不是共享一条信道,可隔离冲突域。网桥比集线器(Hub)性能更好,集线器上各端口都是共享同一条信道的,工作于数据链路层。后被端口更多的交换机替代。 集线器: 多端口中继器,工作在物理层,本身不具备识别信号的能力,只…

    Linux干货 2016-10-17
  • 抵御DDOS攻击,iptables限制TCP连接和频率

    cc攻击一到就有点兵临城下的感觉,正确的设置防护规则可以做到临危不乱,这里给出一个iptables对ip进行连接频率和并发限制,限制单ip连接和频率的设置规则的介绍 #单个IP在60秒内只允许新建20个连接,这里假设web端口就是80, iptables -I  INPUT -i eth1 -p tcp -m tcp –dpo…

    系统运维 2016-05-08