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

 

 

 

 

 

posted on 2020-08-15 19:05  HowOldAreYou  阅读(1358)  评论(0编辑  收藏  举报

导航