建立私有CA和颁发证书及管理

1. 建立私有CA

  1. 使用openssl工具实现搭建一个私有CA,打开文件*/etc/pki/tls/openssl.cnf* ,文件里的内容是openssl 的配置文件。

    • 三种策略:match匹配、optional可选、supplied提供
    • match:要求申请填写的信息跟CA设置信息必须一致
    • optional:可有可无,跟CA设置信息可不一致 aphs
    • supplied:必须填写这项申请信息
  2. 执行以下命令创建私钥

    (umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)
    
  3. 执行以下命令,生成CA自签名证书

    openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out /etc/pki/CA/cacert.pem
    
    • -new:生成新证书签署请求
    • -x509:专用于CA生成自签证书
    • -key:生成请求时用到的私钥文件
    • -days n:证书的有效期限
    • -out /PATH/TO/SOMECERTFILE: 证书的保存路径
    • windows中需加上cer或者crt后缀才能识别证书
  4. 按照提示填写证书信息,完成自签名证书,私有CA搭建完成

    Country Name (2 letter code) [XX]:                        # 填写国家,2个字符
    State or Province Name (full name) [ ]:                 # 省份
    Locality Name (eg, city) [Default City]:                  # 城市
    Organization Name (eg, company) [Default Company Ltd]:        # 公司名
    Organizational Unit Name (eg, section) [ ]:           # 部门
    Common Name (eg, your name or your server's hostname) [ ]:  # 网站
    Email Address [ ]:                                                   # 邮箱
    

2. 证书颁发

  1. 在需要使用证书的主机生成证书请求

    • 给服务器生成私钥

      (umask 066; openssl genrsa -out /data/test.key 2048)
      
    • 生成证书申请文件

      openssl req -new -key /data/test.key -out /data/test.csr  #因是私有CA所以国家、省份、公司名称需和CA一致,如想不一致需进CA服务器/etc/pki/tls/openssl.cnf配置文件进行更改
      
  2. 将证书请求文件传输给CA ,并检查CA是否缺失以下颁发证书文件,缺失需创建,否则会出现错误

    • 证书数据库文件index.txt

      touch /etc/pki/CA/index.txt
      
    • 证书序号文件serial

      echo 0f > /etc/pki/CA/serial
      
  3. CA签署证书,并将证书颁发给请求者

    openssl ca -in /tmp/test.csr –out /etc/pki/CA/certs/test.crt -days 100
    
  4. 同一证书申请文件CA一般不能再次重复签署颁发,如需再次重复颁发需修改以下文件

    • 将*/etc/pki/CA/index.txt.attr* 中的unique_subject = yes 改成unique_subject =no

3. 证书管理

  1. 使用以下命令可以查看证书内容
openssl x509 -in /PATH/FROM/CERT_FILE -noout -text(证书内容)|issuer(证书颁发者信息)|subject(证书拥有者)|serial(证书系列号)|dates(过期时间)
openssl ca -status SERIAL(证书名)                  # 查看指定编号的证书状态
  1. 吊销证书

    • 在客户端获取要吊销的证书的serial标号

      openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject
      
    • 在CA上,根据客户提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致,然后吊销证书

      openssl ca -revoke /etc/pki/CA/newcerts/SERIAL(证书编号).pem
      
    • 指定第一个吊销证书的编号,注意:第一次更新证书吊销列表前,才需要执行

      echo 01 > /etc/pki/CA/crlnumber          # 缺失吊销列表才执行此命令
      
    • 更新证书吊销列表

      openssl ca -gencrl -out /etc/pki/CA/crl.pem
      
    • 查看证书吊销列表

      openssl crl -in /etc/pki/CA/crl.pem -noout -text     # windows中查看需添加crl后缀
      

    本次的个人笔记到此结束