利用openssl建立私有CA

  本次利用openssl建立私有CA,实现https加密通信.

openssl由三部分组成:

  • libencrypto库
  • libssl库
  • openssl多用途命令行工具

加密算法和协议:

  1.   对称加密算法和协议:
      公钥体系:分为公钥和私钥
    1.   DES:  Data Encryption Standard(IBM研发)
    2.   3DES:   Triple DES
    3.      AES:  Advanced Encryption Standard
    4. 特性:加密,解密使用同一密钥
    5. 缺陷:密钥过多,密钥分发困难

      公钥:从私钥中提取,公开给所有人,pubkey

      私钥:通过工具创建,自己保存,secret key

      特点:公钥加密数据,只能使用私钥解密,反之亦然.

      用途:

      • 数字签名:接受方确认发送方身份
      • 密钥交换:发送方利用对方公钥加密一个对称密钥,发送给对方,双方此后利用此对称密钥加密数据
      • 数据加密

      算法:  RSA   DSA

  3.   单向加密:提取数据指纹,只能加密,不能解密

      特性:定长输出,雪崩效应

      功能:完整性

      算法:

      • md5: Message Digest 5,128bits
      • sha1: Secure Hash Algorithm 1
      • sha224
      • sha256
      • sha384
      • sha512

  4.   密钥交换: IKE (Internet Key Exchange)

      DH算法

  5.   PKI: Public Key Infrastructure

      公钥基础设施

      • 签证机构CA
      • 注册机构RA
      • 证书吊销列表CRL
      • 证书存取库
      • 现行证书格式为x509 V3

                    

openssl的配置文件位于/etc/pki/tls/openssl.conf

选定一台主机,在其上生成CA自签证书

1.生成私钥

  (umask 0066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

2.生成自签证书

  openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 4000

  -new生成新的证书签署请求

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

  -key生成请求时用的私钥文件路径

  -out生成的请求文件路径,自签操作将直接生成签署过的证书,用于CA自签

  -days证书有效时长

3.为CA提供所需文件和目录

  CA目录位于/etc/pki/CA

  

 

 

 上面为系统刚创建时生成的四个文件夹,我们还需创建几个文件

cd /etc/pki/CA

touch {serial,index.txt}

echo 01 > serial

crl: certification revoke list证书吊销列表,我们极少涉及

newcerts新生成的证书存放位置

private存放CA私钥cakey.pem

certs存放证书目录

 

 上图为签署过证书后目录的结构

 

4.需求利用证书进行安全通信的主机,向CA请求签署证书

 步骤:(i.g. httpd)

  1. 生成私钥
    1.   mkdir -pv /etc/htttpd/ssl
    2.   cd /etc/httpd/ssl
    3.   (umask 0066;openssl genrsa -out httpd.key 2048)
  2. 生成证书签署请求发送httpd.csr于CA主机
    1.   openssl req -new -key httpd.key -out httpd.csr
  3. CA主机签署证书
    openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
  4. 查看证书信息:
    openssl x509 -in /etc/pki/CA/certs/httpd.crt -text
             

 利用ca.key ca.crt 签署证书

 

 

(umask 0066;openssl genrsa -out exploit.key 2048)

openssl req -new -key exploit.key -out exploit.csr -subj '/CN=exploit'

openssl x509 -req -in exploit.csr -out exploit.crt -CA ca.crt -CAkey ca.key -CAcreateserial

 

 

 

openssl x509

  • -req       input is a certificate request,sign and output
  • -CA        set CA certificate,PEM format
  • -CAkey   set CA key,PEM format
  • -CAcreateserial       create serial number if it does not exist         

 

posted @ 2020-05-29 18:32  ascertain  阅读(51)  评论(0编辑  收藏