2023年6月27日发(作者:)
⾃签名证书当我们需要在企业内部或者测试环境中使⽤证书时,往往需要创建⾃签名证书。Linux系统中的Openssl⼯具可以⽤来⽣成⾃签名证书,实现通信的加密,也可以基于⾃签名的CA证书模拟实际CA信任链的⼯作过程。本⽂基于Openssl介绍⾃签名证书的⽣成和应⽤实践。⾃签名证书分为⾃签名私有证书和⾃签名CA证书两种。⾃签名私有证书⽆法被吊销,⾃签名CA证书可以被吊销。能不能吊销证书的区别在于如果私钥不⼩⼼被恶意获取,如果证书不能被吊销那么⿊客很有可能伪装成受信任的客户端与⽤户进⾏通信。如果你的规划需要创建多个客户端证书,那么使⽤⾃建 CA 签名证书的⽅法⽐较合适,只要给所有的客户端都安装了 CA 根证书,那么以该 CA 根证书签名过的客户端证书都是信任的,不需要重复的安装客户端证书。请注意由于是⾃建 CA 证书,在使⽤这个临时证书的时候,会在客户端浏览器报⼀个错误,签名证书授权未知或不可(signing certificateauthority is unknown and not trusted.),但只要配置正确,继续操作并不会影响正常通信。 ⾃签名证书的 Issuer 和 Subject 是⼀样的。下⾯就分别阐述如何使⽤ OpenSSL ⽣成这两种⾃签名证书。⽣成⾃签名私有证书1. ⽣成证书私钥(Key)#⽣成私钥openssl genrsa -out /path/to/keyfile 20482. 如果需要备份或者转移私钥,需要先对私钥进⾏加密#私钥加密,⽤于备份或者转移私钥openssl rsa -in /path/to/keyfile -des3 -out /path/to/3. ⽣成证书请求⽂件(Certificate Sign Request)#⽣成证书请求⽂件(Certificate sign request)openssl req -new -key /path/to/keyfile -out /path/to/csrfile4. 使⽤上⼀步的证书签名请求签发证书(Certificate)#⾃签名,⽣成私有证书openssl x509 -req -in /path/to/ -signkey /path/to/ -out /path/to/5. 查看证书信息#查看证书信息openssl x509 -in /path/to/certfile -noout -text上⾯的1-4步也可以通过命令⾏合并为⼀步实现openssl req -new -x509 -newkey rsa:2048 -keyout /path/to/ -out /path/to/⽣成⾃签名CA证书创建⾃签 CA 证书,主要分为两个部分: 创建CA 根证书及签发客户端证书。创建CA根证书使⽤ OpenSSL 可以创建⾃⼰的 CA,给需要验证的⽤户或服务器颁发证书,这就需要创建⼀个 CA 根证书。默认情况ubuntu和CentOS上都已安装好openssl。CentOS 6.x 上有关ssl证书的⽬录结构。/etc/pki/CA/ newcerts 存放CA签署(颁发)过的数字证书(证书备份⽬录) private ⽤于存放CA的私钥 crl 吊销的证书/etc/pki/tls/ 软链接到certs/ certs/ 该服务器上的证书存放⽬录,可以房⼦⾃⼰的证书和内置证书 内置信任的证书 private 证书密钥存放⽬录 openssl的CA主配置⽂件在创建 CA 根证书之前,需要做好如下准备⼯作:修改好 CA 的配置⽂件、序列号、索引等等。touch serialecho 01 >> serialopenssl的配置⽂件为,⼀般存储在/etc/pki/tls/⽬录下。⼀定要注意配置⽂件中 [ policy_match ]标签下设定的匹配规则。有可能因为证书使⽤的⼯具不⼀样,导致即使设置了csr中看起来有相同的countryName,stateOrProvinceName等,但在最终⽣成证书时依然报错。⼀般情况下,配置⽂件不需要改动。1. ⽣成根证书密钥# ⽣成CA根证书密钥cd /etc/pki/CA/openssl genrsa -out ./private/ 20482. ⽣成根证书请求# 新建根证书请求openssl req -new -in /path/to/ -out 3. ⽣成根证书#⾃签名,⽣成CA证书openssl x509 -req -in /path/to/ -signkey /path/to/ -extensions v3_ca -out /path/to/签发证书我们可以⽤CA根证书签发证书,也可以创建中间CA,使⽤中间CA签发证书。创建中间CA的好处是即使中间CA的私钥泄露,造成的影响也是可控的,我们只需要使⽤root CA撤销对应中间CA的证书即可。此外root CA的私钥可以脱机妥善保存,只需要在撤销和更新中间CA证书时才会使⽤。基于根证书创建中间CA与创建根证书过程类似。我们新建⼀个⽬录⽤于保存中间证书信息。#准备环境mkdir /etc/pki/CA/intermediatecd /etc/pki/CA/intermediatemkdir certs crl newcerts privatechmod 700 privatetouch o 1000 > serial#⽣成密钥cd /etc/pki/CAopenssl genrsa -aes256 -out intermediate/private/ 2048#新建请求openssl req -config intermediate_ -sha256 -new -key intermediate/private/ -out intermediate/certs/#签发中间CA证书openssl ca -config root_ -extensions v3_ca -notext -md sha256 -in intermediate/certs/ -out intermediate/certs/利⽤根证书或者中间证书签发客户端证书的步骤如下:1. 新建证书密钥#新建密钥openssl genrsa -out /path/to/ 20482. 新建证书请求#新建证书请求openssl req -new -in /path/to/ -out /path/to/3. CA签发证书#证书CA签名openssl x509 -req -in /path/to/ -CA /path/to/ -CAkey /path/to/ -CAcreateserial -out /path/to/4. CA证书的有效性验证#验证证书openssl verify -CAfile /path/to/ /path/to/#如果结果显⽰OK,说明我们颁发的证书是有效的。不同客户端证书格式转换#crt,pem格式证书可⽤于linux/nginx/格式客户端#p12(pkcs12)格式证书⽤于tomcat/java/android客户端#打包为p12证书openssl pkcs12 -export -in /path/to/ -inkey /path/to/ -out /path/to/server.p12吊销证书当证书已经不再使⽤或者密钥泄露时,我们需要吊销证书来保证服务器的安全。#获取要吊销的证书的serialopenssl x509 -in /path/to/ -noout -serial -subject#对⽐serial与subject 信息是否与中的信息⼀致#如果⼀致,则可以吊销证书openssl ca -revoke /etc/pki/CA/newcerts/#如果是第⼀次吊销证书,需要指定吊销的证书编号echo 01 >/etc/pki/CA/crlnumber#更新吊销证书列表openssl ca -gencrl -out /etc/pki/CA/#完成后,可查看吊销的证书列表openssl crl -in /etc/pki/CA/ -noout -text
发布者:admin,转转请注明出处:http://www.yc00.com/web/1687803194a46407.html
评论列表(0条)