自建CA证书认证

自建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 -text

tls:传输层安全协议 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编码

====================================================================================

注:
本文属于作者原创,如需转载,请注明。
内部如果引用的文字,连接,图片等资源存在侵犯原作者的情况,请联系本人,立即删除。

你可能感兴趣的:(Linux,Web)