美文网首页
openssl, 建立私有CA

openssl, 建立私有CA

作者: epiiplus1equal0 | 来源:发表于2019-04-05 00:44 被阅读0次

[TOC]

openssl version # 版本号
# 标准命令
    enc, ca, req, ...
# 对称加密
    工具: openssl enc, gpg
    算法: 3des, aes, blowfish, twofish

    # enc命令:
    # 实例: 加密/root/fstab
    openssl enc -e -des3 -a -salt -in /root/fstab -out /root/fstab.ciphertxt
        -e    加密
        -d    解密
        -des3 使用哪种算法, 此处为使用des3这种算法
        -a    基于文本进行编码
        -salt 自动加杂质
        -in   需要加密的文件
        -out  加密后输出的文件

    # 实例: 解密对应文件
    openssl enc -d -des3 -a -salt -in /root/fstab.ciphertxt -out /root/fstab

# 单向加密:
    工具: md5sum, sha1sum, sha224sum, sha256sum, ..., openssl dgst (消息摘要)
    openssl dgst -md5 -hex -out /PATH/TO/RESULT_FILE /PATH/TO/FILE
    MAC: message authentication code, 单向加密的一种延伸应用, 
                 用于实现保证网络通信中所传输数据的完整性
        机制:
            CBC-MAC
            HMAC: 使用md5或sha1算法 (集群会使用)

# 生成用户密码:
    openssl passwd -1 -salt 'SALT' # 回车后输入密码, 即可显示加密后的密码
    -1    md5加密
    -salt 指明杂质
    
# 生成随机数:
    openssl rand [ -base64 | -hex ] [-out file] num
    -base64 | -hex 指明编码格式
    num            指明输出的位数(字节数), -hex时, 每个字符4位, 出现的字符数为num*2;

# 公钥加密
    DSA: digital signature algorithm (数字签名算法, 功能薄弱)
    RSA: 算法统称, 公司名 (一般使用RSA)
    加密:
        算法: RSA, ELGamal
        工具: gpg, openssl rsautl, openssl dsa
    数字签名: 
        算法: RSA, DSA, ELGamal
        工具: openssl rsa, openssl dsa
    密钥交换:
        算法: dh
    生成密钥对儿:
        openssl genrsa  [ -des | -des3 ] -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS
            -des | -des3 将密钥文件加密, 每次访问时需要输入密码
            -out       指明生成的密钥文件路径
            NUM_BITS   指明生成密钥的位数
            # 先生成的是私钥文件, 公钥可从私钥中提取出来
            openssl rsa -in /root/rsakey.private -pubout
                -pubout 输出公钥信息
        (umask 077; openssl genrsa -out rsa.pri 2048)
            # bash shell的括号有特殊用法: 
            # 所有放在括号中的命令是在子shell中运行
            # 子shell中设置的umask值对当前shell无影响
    随机数生成器:
        熵池: 位于内存空间
        /dev/random: 仅从熵池返回随机数, 随机数用尽会阻塞
        /dev/urandom: 从熵池返回随机数, 随机数用尽, 会利用软件生成伪随机数, 不会阻塞
    

三个组件

  • openssl 多用途的命令行工具

  • libcrypt 加密解密库

  • libssl ssl协议的实现

PKI

public key infrastructure (公钥基础设施)

  • CA 发证机构
  • RA 注册机构
  • CRL 吊销列表
  • 证书存取库

建立私有CA

两种方式:

  • openCA (是openssl的二次封装)
  • openssl

证书申请及签署步骤

  • 1.生成申请请求
  • 2.RA核验
  • 3.CA签署
  • 4.获取证书

创建私有CA

/etc/pki/tls/openssl.cnf
作为CA时经常用到的默认配置文件, 内部的设置要与存放的相关内容一致

0. 配置好各个文件的存放路径

[CA_default]
dir         = /etc/pki/CA     # CA真正的工作目录
certs       = $dir/certs      # 已签发的证书存放位置
crl_dir     = $dir/crl        # 放被吊销后的证书
database    = $dir/index.txt  # 证书目录
certificate = $dir/cacert.pem # CA自己的证书
serial      = $dir/serial     # 新发证书的序列号
crlnumber   =                 # 吊销证书的序列号
crl         =                 # 当前正在使用的crl文件
private_key =                 # CA自己的私钥
RANDFILE    =                 

default_days     = 365        # 证书的有效期
default_crl_days = 30         # 吊销列表的有效期
default_md       = default
preserve         = 

(1) 创建所需文件

cd /etc/pki/CA
touch index.txt
echo 01 > serial

(2) CA自签证书

# (1) 先创建CA自己的私钥
(umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
# (2) 再根据私钥创建公钥
openssl req  -key /etc/pki/CA/private/cakey.pem -new -x509 \
-days 7300 -out /etc/pki/CA/cacert.pem
    # -key    生成请求时用到的私钥文件
    # -new    生成新证书签署请求
    # -x509   专用于CA生成自签证书 
    # -days N 证书的有效期限
    # -out    证书的保存路径

(3) 发证

    # (3.1) 用到证书的主机生成证书请求
(umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
openssl req -key /etc/httpd/ssl/httpd.key -new -days 365 \ 
-out /etc/httpd/ssl/httpd.csr
    # (3.2) 把请求文件传输给CA
scp /etc/httpd/ssl/httpd.csr root@192.168.235.140:/tmp
    # (3.3) CA验证证书, 并将签署后的证书还给请求者
openssl ca -in /tmp/httpd.csr -out /tmp/httpd.crt -days 365
scp /tmp/httpd.crt root@192.168.235.130:/tmp

# 查看证书中的信息
openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|-subject|-serial
https_服务器证书.png

(4) 吊销证书

# (4.1) 客户端获取要吊销的证书的serial
opessl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject
# (4.2) CA
# 先根据客户提交的serial和subject信息, 对比检验是否与index.txt文件中的信息一致
# 吊销证书:
openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
# (4.3) 生成吊销证书的编号(仅第一次吊销一个证书时执行)
echo 01 > /etc/pki/crlnumber
# (4.4) 更新证书吊销列表
openssl ca -gencrl -out thisca.crl

# 查看crl文件:
openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text

相关文章

网友评论

      本文标题:openssl, 建立私有CA

      本文链接:https://www.haomeiwen.com/subject/ijociqtx.html