CA简介:CA是负责签发证书、认证证书、管理已颁发证书的机关。它要制定政策和具体步骤来验证、识别用户身份,并对用户证书进行签名,以确保证书持有者的身份和公钥的拥有权。网上的公众用户通过验证 CA 的签字从而信任 CA ,任何人都可以得到 CA 的证书(含公钥),用以验证它所签发的证书。
证书简介:现在我们通过浏览器访问网站,一般都有证书的,这些证书就是有CA颁发的,证明你这个网站是可靠的,尤其是一些购物网站,如:淘宝,京东,我们可以查看网站的源码来查看他的证书(F12)找到Security查看。
LINUX模拟CA的建立和证书的申请
如何实现:
我们模拟把主机A当做根CA自建一个,主机B通过Openssl命令来模拟申请证书。
openssl配置文件:
/etc/pki/tls/openssl.cnf 我们找到CA和policy_match部分了解CA相关文件的存放和证书存放的文件。
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 下一个将要颁发证书的序列号 [默认不存在,要手动创建,不然会报错]
crlnumber= $dir/crlnumber 吊销证书的编号
crl= $dir/crl.pem 吊销证书存放的文件
private_key= $dir/private/cakey.pem证书的私钥存放文件
policy= policy_match
# For the CA policy
[ policy_match ]
countryName= match 国家
stateOrProvinceName= match 省市
organizationName= match 公司名称
organizationalUnitName= optional 公司单元名 可以不填 随便怎么翻译吧= =
commonName= supplied 名字
emailAddress= optional 邮箱
其中match表示自建根CA和申请证书时所填信息必须一致,optional可写可不写,supplied要写可以不一样。
主机A的配置
建立文件:
touch /etc/pki/CA/index.txt
echo 01 > /etc/pki/CA/serial
生成私钥文件
命令:(umask 066; openssl genrsa -out /etc/pki/CA/private/cakey.pem -des3 2048)
括号里定义umask进入子进程,只修改私钥文件的权限 -des3是对私钥文件进行加密 [文件名是特定的,不能更改]
生成一个自签名CA证书
openssl req -new -x509 –key/etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem [文件名是特定的,不能更改]
-new: 生成新证书签署请求
-x509: 专用于CA生成自签证书
-key: 生成请求时用到的私钥文件
-days n:证书的有效期限
-out /PATH/TO/SOMECERTFILE: 证书的保存
自签名CA填写信息如上图,根据policy可知其中前124选项为match必须匹配,第5选项为supplied,为颁发者的名字,其他可以不填。
这样我们的自签名CA的相关文件就准备好了。
主机B的配置:
生成自己的私钥:还是一样的命令
(umask 066;openssl genrsa -out /etc/pki/tls/private/wrz.key 2048)2048 指定位数
生成证书申请文件
openssl req -new -key /etc/pki/tls/private/wrz.key -days 365 -out /etc/pki/tls/wrz.csr 这是出现的界面和生成自签CA一样,需要填写信息
其中124选项在policy中为match,所以要和自签CA时填写的一致,第6项为被颁发的名称。其他可填可不填。
将证书申请文件发送到主机A上:scp /etc/pki/tls/wrz.csr 192.168.109.159:/etc/pki/CA/
主机A收到证书申请文件
CA签署证书,给请求者颁发证书
命令:openssl ca -in /etc/pki/tls/wrz.csr -out /etc/pki/CA/certs/wrz.crt -days 365 然后出现确认信息无误后就可以签名颁发证书了。
用sz命令把linux上生成的证书发送到Windows上,修改下后缀为.per 安装证书,这样就完成了自签CA和证书颁发的过程。