zoukankan      html  css  js  c++  java
  • 在Ubuntu下使用OpenSSL搭建CA

    在Ubuntu下使用OpenSSL搭建CA

    我使用的环境是Ubuntu 20.04.1 LTS

    建立CA目录结构

    在主目录下输入如下命令,建立CA目录结构

    mkdir ca
    cd ca
    mkdir newcerts private conf server users
    
    • newcerts目录将用于存放CA签署过的数字证书。
    • private目录用于存放CA的私钥。
    • conf目录用于存放简化参数用的配置文件。
    • server目录存放服务器证书文件。
    • users目录存放用户证书文件。

    conf下的配置文件

    cd conf
    vim openssl.conf
    

    在conf目录下新建一个包含如下信息的openssl.conf文件

     [ ca ]
     default_ca = foo
     [ foo ] 
     dir = /home/xieyi/ca
     database = /home/xieyi/ca/index.txt
     new_certs_dir = /home/xieyi/ca/newcerts
     certificate = /home/xieyi/ca/private/ca.crt
     serial = /home/xieyi/ca/serial
     private_key = /home/xieyi/ca/private/ca.key
     RANDFILE = /home/xieyi/ca/private/.rand
     default_days = 365
     default_crl_days = 30
     default_md = sha256
     unique_subject = no
     policy = policy_any
     [ policy_any ]
     countryName = match
     stateOrProvinceName = match
     organizationName = match
     organizationalUnitName = match
     localityName = optional
     commonName   = supplied
     emailAddress = optional
    

    生成私钥和根证书

    生成私钥key

    cd ..
    openssl genrsa -out private/ca.key
    

    生成证书请求csr文件

    openssl req -new -key private/ca.key -out private/ca.csr
    

    生成根证书crt文件

    openssl x509 -req -days 365 -in private/ca.csr -signkey private/ca.key -out private/ca.crt
    

    为CA的key设置起始序列号

    sudo echo FACE > serial
    

    serial是证书签发时使用的序列号参考文件,该文件的序列号是以16进制格式进行存放的,该文件必须提供并且包含一个有效的序列号,序列号可以是任意四个字符

    创建CA键库

    touch index.txt
    

    penSSL定义的已签发证书的文本数据库文件,这个文件通常在初始化的时候是空的

    为移除客户端证书创建一个证书撤销列表

    openssl ca -gencrl -out private/ca.crl -crldays 7 -config "/home/xieyi/ca/conf/openssl.conf"
    

    生成客户端证书并为之签名

    为客户端创建一个key

    openssl genrsa -aes128 -out users/client.key 2048
    

    创建key时会提示Enter pass phrase for users/client.key:

    这是当前key的口令,防止本密钥泄漏后被人盗用,两次输入同一个密码

    为客户端key创建一个证书签名请求csr文件

    openssl req -new -key users/client.key -out users/client.csr
    

    提示需要输入刚才为key设置的口令

    这里的输入除了在Common Name中需修改为localhost外,其余均需与之前相同

    使用根证书的key为客户端的key签名

    openssl ca -md sha256 -in /home/xieyi/ca/users/client.csr -cert private/ca.crt -keyfile private/ca.key -out users/client.crt -config "/home/xieyi/ca/conf/openssl.conf"
    

    当出现确认是否签名的提示时,两次都输入y

    将证书转换为PKCS12文件

    openssl pkcs12 -export -clcerts -in users/client.crt -inkey users/client.key -out users/client.p12
    

    按照提示输入为客户端client.key设置的pass phrase

    随后设置用于导出证书的密码:这个是客户端证书的保护密码,在安装客户端证书时需要输入这个密码

    遇到的一些问题

    • 权限不够

      使用sudo su进入root模式获得最高权限

    • 生成的CA目录之后,无法将全部的文件移动,如关键的.key和.crt文件无法被移动

      使用zip -r ./ca.zip ./ca命令将CA目录做成压缩包,即可将CA的全部内容移动至Windows环境

  • 相关阅读:
    2019-2020 20191232《信息安全专业导论》第七周学习总结
    求最大公约数伪代码
    2019-2020-1 20191232《信息安全专业导论》第五周学习总结
    2019-2020 20191232《信息安全专业导论》第二周学习总结
    冲刺分析
    冲刺第5天——json
    2020课程设计(基于gmssl的CA系统构建及应用)个人报告——20181211沈芮吉
    2020课程设计gmssl
    2020课程设计第三周任务——20181211沈芮吉
    2020课程设计第二周任务——20181211沈芮吉
  • 原文地址:https://www.cnblogs.com/blingblingXY/p/13875510.html
Copyright © 2011-2022 走看看