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) 编辑 收藏 举报