自建CA证书认证
CA证书认证通常包含三部分,CA认证服务器、业务服务器、客户端,也可以简单分成两部分CA/业务服务器,和客户端
CA服务器
生成私钥(pem)
openssl genrsa -out cakey.pem -des 2048
gen:生成 rsa:加密算法 out:输出 des:秘钥加密口令(可加可不加) 2048:秘钥生成长度(2048 bits),默认1024
生成根证书签发请求(csr)
openssl req -new -key cakey.pem -out cakey.csr
生成自签发根CA证书
创建CA的方式有多种,可以分别使用req、x509、ca 等伪命令来创建和签发CA证书
-
req
openssl req -new -x509 -key cakey.pem -days 365 -out cacert.pem -
x509
openssl x509 -req -in cakey.csr -signkey key.pem -out cacert.pem -
ca
openssl ca -selfsign -keyfile cakey.pem -in cakey.csr -batch -out cacert.pem
这是采用 etc/pki/tls/openssl.cnf 默认文件的配置方式生成CA证书,是比较规范推荐的生成方式,
采用默认配置 -key 、-signkey、-keyfile等属性可以不用添加,系统会到默认文件夹下自己加载
使用默认配置文件方式必须提前按照规定创建好index.txt和serial文件,其他文件和文件夹的命名也必须一致,看相关重要文件夹
获取serial
获取客户端/服务端证书的serial
openssl x509 -in client.crt/server.crt -noout -subject
吊销证书
对比获取到的serial序列号是否与index数据库中的信息一致,一致吊销证书
openssl ca -revoke serial.pem
serial为new_certs_dir文件夹下要吊销的证书编号与在客户端或者服务端查出的serial一致
刷新吊销列表
第一次要生成吊销证书序号echo 00 > /etc/pki/CA/crlnumber
openssl ca -gencrl -out crl.crl
业务服务端
生成私钥(pem)
openssl genrsa -out server.pem -des 2048
生成证书签发请求(csr)
openssl req -new -key server.pem -out server.csr
由根CA颁发证书
openssl ca -in server.csr -out server.crt -days 100
客户端
生成私钥(pem)
openssl genrsa -out client.pem -des 2048
生成证书签发请求(csr)
openssl req -new -key client.pem -out client.csr
由根CA颁发证书
openssl ca -in client.csr -out client.crt -days 100
相关重要文件夹
dir = /etc/pki/CA
certs = $dir/certs //证书归档文件夹
database = $dir/index.txt //证书数据库
new_certs_dir = $dir/newcerts //新颁发证书文件夹
certificates = $dir/cacet.pem //Root CA
serial = $dir/serial //下一个颁发证书的序列号,由16进制数字构成最低2位
private_key = $dir/private/cakey.pem //私钥
其他命令
-
生成用户密码口令
openssl passwd -1 -salt
-1 为使用的加密算法(hash),-salt是加盐(最长8bits),可以随机或者自己在后面指定 -
加密
openssl enc -e -des3 -a -salt -in encode.txt -out encode.enc
enc:加密/解密 -e:加密 -des3:加密算法 -salt:加盐 -in:输入文件 -out:输出文件 -
解密
openssl enc -d -des3 -a -salt -in encode.enc -out encode.encd
-d:解密
从私钥中获取公钥
openssl rsa -in cakey.pem -pubout -out cakey.pubkey
显示证书信息
openssl x509 -in server.csr -noout -text
查看crl文件
openssl crl -in crl.crl -noout -texttls:传输层安全协议 Transport Layer Security的缩写
ssl:安全套接字层 Secure Socket Layer的缩写
csr:是Certificate Signing Request的缩写,即证书签名请求,这不是证书
crt:即 certificate的缩写,即证书。linux/unix常用的证书后缀,一般为ascii文件cer:是crt的替代形式,windows常用证书的后缀,一般为二进制文件。证书中没有私钥
pem:Privacy Enhanced Mail,打开看文本格式,以"-----BEGIN…"开头, "-----END…"结尾,内容是BASE64编码
====================================================================================
注:
本文属于作者原创,如需转载,请注明。
内部如果引用的文字,连接,图片等资源存在侵犯原作者的情况,请联系本人,立即删除。