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环境

  • 相关阅读:
    解决ListView异步加载数据之后不能点击的问题
    android点击实现图片放大缩小 java技术博客
    关于 数据文件自增长 的一点理解
    RAC 实例不能启动 ORA1589 signalled during ALTER DATABASE OPEN
    Linux 超级用户的权利
    RAC 实例 迁移到 单实例 使用导出导入
    Shell 基本语法
    Linux 开机引导与关机过程
    RAC 实例不能启动 ORA1589 signalled during ALTER DATABASE OPEN
    Oracle RAC + Data Guard 环境搭建
  • 原文地址:https://www.cnblogs.com/blingblingXY/p/13875510.html
Copyright © 2011-2022 走看看