通过openssl搭建CA中心并验证签名证书有效
在linux下搭建CA中心,并在客户端验证CA签名是否正确:
在linux上搭建CA中心主要是通过openssl工具包进行的:
1.ca中心的文件夹结构树
demoCA/ |--cacert.pem |--certs | |--01.pem |--index.txt |--index.txt.attr |--openssl.cnf |--private | |--cakey.pem |--serial |--serial.old
1.cacert.pem是ca中心自签名证书。
2.certs是存放呗ca中心签名以后的证书。
3.index.txt记录ca中心签名记录。
4.openssl.cnf是CA中心的配置文件。
5.它确定该ca中心对用户提供的信息的验证方式。
6.private存放ca中心自己的私钥。
7.serial记录当前ca签证的编号。
openssl.cnf配置文件内容:
[ ca ] default_ca = exampleca [ exampleca ] dir = /opt/demoCA certificate = $dir/cacert.pem database = $dir/index.txt new_certs_dir = $dir/certs private_key = $dir/private/cakey.pem serial = $dir/serial default_crl_days = 7 default_days = 365 default_md = sha1 policy =demoCA_policy x509_extensions =certificate_extensions [ demoCA_policy ] commonName = supplied stateOrProvinceName = supplied countryName = supplied emailAddress = supplied organizationName = supplied organizationalUnitName = optional [ certificate_extensions ] basicConstraints = CA:false [ req ] default_bits = 2048 default_keyfile = /opt/demoCA/private/cakey.pem default_md = sha1 prompt = no distinguished_name = root_ca_distinguished_name x509_extensions = root_ca_extensions [ root_ca_distinguished_name ] commonName = Example CA stateOrProvinceName = BeiJing countryName = CN emailAddress = duanxiongchun@gmail.com organizationName = Root duan organizationalUnitName = duan CA [ root_ca_extensions ] basicConstraints = CA:true
创建CA中心的密钥
openssl genrsa -des3 -out demoCA/private/cakey.pem 2048
创建CA的证书请求文件
openssl req -new -days 365 -key ./demoCA/private/cakey.pem -out careq.pem
创建CA的自签名证书
openssl ca -selfsign -in careq.pem -out demoCA/cacert.pem -config demoCA/openssl.cnf
这样我们现在就已经有了CA中心的证书和密钥了,接下来我们需要使用CA中心的密钥签名其他服务或者个人的证书
创建用户的密钥
openssl genrsa -des3 -out userkey.pem 1024
创建用户的证书请求文件
openssl req -new -days 365 -key userkey.pem -out userreq.pem
用CA的密钥和配置文件签证用户证书
openssl ca -in userreq.pem -out usercert.pem -config demoCA/openssl.cnf
使用被签证的用户证书加密信息
openssl rsautl -encrypt -certin -inkey usercert.pem -in test.txt -out test.cipher
使用用户密钥解密信息
openssl rsautl -decrypt -inkey userkey.pem -in test.cipher -out test.crts
验证用户签名有效
openssl verify -CAfile demoCA/cacert.pem usercert.pem