CA和证书

CA和证书

创建CA

  1. 查看openssl.cnf配置文件:位于/usr/lib/ssl/openssl.cnf.ca相关的配置在CA_default条目下

    dir = /etc/pki/CA # CA的工作目录
    certs = $dir/certs # 存放证书的地方
    crl_dir = $dir/crl # 证书吊销列表
    database = $dir/index.txt # 存放证书信息的数据库,需要手工创建
    new_certs_dir = $dir/newcerts # 新证书默认放此文件夹
    certificate = $dir/cacert.pem # CA的证书文件
    serial = $dir/serial # 下一个要颁发的证书序列号(16进制数)
    crlnumber= $dir/crlnumber # 下一个要吊销证书的序列号
    crl = $dir/crl.pem # 证书吊销列表
    private_key = $dir/private/cakey.pem # 存放私钥
    RANDFILE= $dir/private/.rand # 生成随机数
    x509_extensions = usr_cert # 不关键
    policy= policy_match # 策略匹配
  2. 创建di对应的目录或更改dir位置,例如dir = /etc/pki/CA

  3. dir目录下创建certs、crl、newcerts、private目录,index.txt,serial文件

sudo mkdir -pv /etc/pki/CA/{certs,crl,newcerts,private}
sudo touch /etc/pki/CA/{serial,index.txt}
cd /etc/pki/CA/
  1. 指明指定第一个颁发证书的序列号:
echo 01 >> serial  # 需要root用户才能执行'su root',或"sudo sh -c 'echo 01 >>serial'"也可手动写入srial文件
  1. 生成自签证书(在root用户下进行):

    1. 生成密钥:
    (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048) # umask减小权限,-out后选项由private_key定义,密钥保存目录.
    1. 生成自签证书:
    openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365

    命令中用到的选项解释:

    + -new:表示生成一个新证书签署请求
    
    + -x509:专用于CA生成自签证书,如果不是自签证书则不需要此项
    
    + -key:生成请求时用到的私钥文件
    
    + -out:证书的保存路径
    
    + -days:证书的有效期限,单位是day(天),默认是365天
    

    需要填写的信息:

    Country Name (2 letter code) [AU]:CN # 国家
    State or Province Name (full name) [Some-State]:BeiJing # 省
    Locality Name (eg, city) []:beijing # 城市
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:wy # 公司
    Organizational Unit Name (eg, section) []: # 可选,
    Common Name (e.g. server FQDN or YOUR name) []:wyao.club # 域名
    Email Address []:[email protected] #邮箱
    

    查看证书内容:openssl x509 -in cacert.pem -noout -text,windows里看,改成cer或crt后缀

生成证书

  1. 在需要证书的主机上生成证书请求:
(umask 077;openssl genrsa -out text.key 4096) # 生成私钥
openssl req -new -key text.key -out text.csr -days 365 # 根据私钥生成证书请求
  1. 将证书请求发送给CA服务器,在CA服务器上签名:
可以用ssh命令scp将文件复制到远程主机
openssl ca -in text.csr -out /etc/pki/CA/certs/text.crt -days 365 # 签名,国家,省,组织等选项要与CA自签证书一致
  1. 查看证书信息:openssl x509 -in /etc/pki/CA/certs/text.crt -noout -serial -subject

  2. 将签好的证书发给请求签证的客户端

吊销证书

  1. 在客户机上获取要吊销证书的 serial 和 subject 信息

  2. 根据客户机提交的 serial 和 subject 信息,对比其余本机数据库 index.txt 中存储的是否一致

  3. 执行吊销操作:openssl ca -revoke /etc/pki/CA/newcerts/01.pem

  4. 生成吊销证书的吊销编号(第一次吊销证书时执行):’echo 01 > /etc/pki/CA/crlnumber’

  5. 更新证书吊销列表:openssl ca -gencrl -out /etc/pki/CA/crl/ca.crl查看 crl 文件命令:openssl crl -in /etc/pki/CA/crl/ca.crl -noout -text

配置文件生成证书请求

  1. 编写配置文件,示例www.cnf:
[ req ]
prompt = no
distinguished_name = req_distinguished_name

[ req_distinguished_name ]
countryName                     = us
stateOrProvinceName             = New York
localityName                    = New York
0.organizationName              = Example from Apress Media LLC
organizationalUnitName          = Foundations of Python Network Programming 3rd Ed
commonName                      = www.example.com
emailAddress                    = [email protected]

[ ssl_client ]
basicConstraints = CA:FALSE
nsCertType = client
keyUsage = digitalSignature, keyEncipherment
extendedKeyUsage = clientAuth
  1. 生成密钥:openssl genrsa -out www.key 4096

  2. 生成证书请求:openssl req -new -key www.key -config www.cnf -out www.csr

  3. 通过CA获取签名证书

  4. 将证书和私钥结合起来,保存在单个文件中:cat www.crt www.key > www.pem

参考

参考1:openssl用法详解https://www.cnblogs.com/yangxiaolan/p/6256838.html
参考2:ubuntu CA安装证书https://blog.csdn.net/ww7109/article/details/80141858
参考3:python网络编程

猜你喜欢

转载自blog.csdn.net/qq_32392853/article/details/82594403