zoukankan      html  css  js  c++  java
  • CA和自签证书

    签证机构

    CA(Certificate Authority)存在的必要性。在网络中通信中,由于中间人的存在导致双方无法通过自己,判断出对方是否真可信。因此以来有公信力的第三方组织机构来
    “证明”通信双方的身份,很有必要。

    CA存在的必要性

    预防中间人攻击

    如下图,中间人通过将client的公钥,替换为自己的公钥后发送给server;或者将server的公钥,替换为自己的公钥后发送给server,达到client和server都使用中间人的
    公钥加密数据,从而窃取数据。

    专业术语

    PKI:Public Key Infrastructure

      签证机构:CA(Certificate Authority)
      注册机构:RA
      证书吊销列表:CRL
      证书存取库:
    X.509:
    定义了证书的结构以及认证协议标准
      版本号  序列号      签名算法
      颁发者  有效期限  主体名称
      主体公钥 CRL分发点 扩展信息  发行者签名

    获取证书两种方法:

    证书授权机构
      生成证书请求(csr)
      将证书请求csr发送给CA
      CA签名颁发证书
    自签名的证书
      搭建私有CA,自已签发自己的公钥

    实验一:通过搭建私有CA,签署证书,实现https通信

    说明:CA的也需要有证书,它的证书时自己签署的。

    创建CA和申请证书

    第一部分:创建私有CA:

    openssl的配置文件:此配置文件可以默认不必更改。我们需要做的就是按照配置文件,在指定位置创建必要文件
    /etc/pki/tls/openssl.cnf,该文件含有ca的配配置。比如默认CA,CA_default,签署证书存放目录,序列号,策略等。部分重要配置如下
    [ CA_default ]
    dir        = /etc/pki/CA        # Where everything is kept
    certs        = $dir/certs        # Where the issued certs are kept
    crl_dir    = $dir/crl        # Where the issued crl are kept
    database    = $dir/index.txt    # database index file.
                        # several ctificates with same subject.
    new_certs_dir    = $dir/newcerts        # default place for new certs.
    certificate    = $dir/cacert.pem     # The CA certificate CA自签证书存放位置
    serial        = $dir/serial         # The current serial number
    crlnumber    = $dir/crlnumber    # the current crl number
                        # must be commented out to leave a V1 CRL
    crl        = $dir/crl.pem         # The current CRL
    private_key    = $dir/private/cakey.pem# The private key CA的私钥存放位置。
    RANDFILE    = $dir/private/.rand    # private random number file
    x509_extensions    = usr_cert        # The extentions to add to the cert
    name_opt     = ca_default        # Subject Name options
    cert_opt     = ca_default        # Certificate field options
    default_days    = 365            # how long to certify for
    default_crl_days= 30            # how long before next CRL
    default_md    = sha256        # use SHA-256 by default
    preserve    = no            # keep passed DN ordering
    policy        = policy_match
    三种策略:match匹配、optional可选、supplied提供
      match:要求申请填写的信息跟CA设置信息必须一致,此为默认策略,也就时我们创建私有CA时需要注意国家,省份,机构需要和CA的配置相同。
    [ policy_match ]
    countryName        = match
    stateOrProvinceName    = match
    organizationName    = match
    organizationalUnitName    = optional
    commonName        = supplied
    emailAddress        = optional

      optional:可有可无,跟CA设置信息可不一致

      supplied:必须填写这项申请信息,
    第一步:创建所需要的文件
    touch /etc/pki/CA/index.txt #生成证书索引数据库文件
    echo 01 > /etc/pki/CA/serial #指定第一个颁发证书的序列号

    第二步: CA自签证书

    生成私钥
    cd /etc/pki/CA/
    (umask 066; openssl genrsa -out private/cakey.pem 2048)
    第三步:生成自签名证书
    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: 证书的保存路径

    第二部分:向私有CA申请证书

    第一步:在需要使用证书的主机生成证书请求
    给web服务器生成私钥
    (umask 066; openssl genrsa –out /data/test.key 2048)
    生成证书申请文件
    openssl req -new -key /data/test.key -out /data/test.csr

    第三部分:CA签署证书

    openssl ca -in /tmp/test.csr –out /etc/pki/CA/certs/test.crt -days 100
    注意:默认要求 国家,省,公司名称三项必须和CA一致

    将证书发送给申请者后,在申请者的主机上看到.cst文件。

    查看证书内容

    openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|issuer|subject|serial|dates

     
  • 相关阅读:
    部署prerender服务器
    Bzoj4727--Poi2017Turysta
    Bzoj4818--Sdoi2017序列计数
    Heoi2014系列题解
    scoi2017酱油记
    Burnside引理与Pólya定理
    2017省选前北京集训总结
    奥妙重重的随机发生器
    ???--???Insection is not allowed
    反演
  • 原文地址:https://www.cnblogs.com/wxxjianchi/p/13509911.html
Copyright © 2011-2022 走看看