实现非对称加密文件和证书的创建与吊销
1、在CentOS7中使用gpg创建RSA非对称密钥对
#生成密钥对
[ root@CentOS7 ]# gpg --gen-key
请选择您要使用的密钥种类:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (仅用于签名)
(4) RSA (仅用于签名)
您的选择? 1 #不填默认为1
RSA 密钥长度应在 1024 位与 4096 位之间。
您想要用多大的密钥尺寸?(2048)1024 #不填默认为2048
您所要求的密钥尺寸是 1024 位
请设定这把密钥的有效期限。
0 = 密钥永不过期
<n> = 密钥在 n 天后过期
<n>w = 密钥在 n 周后过期
<n>m = 密钥在 n 月后过期
<n>y = 密钥在 n 年后过期
密钥的有效期限是?(0) 0 #不填默认为0
密钥永远不会过期
以上正确吗?(y/n)y
真实姓名:
姓名至少要有五个字符长
真实姓名:centos6
电子邮件地址:
注释:
您选定了这个用户标识:
“centos6”
更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)?O
#可查看公钥
[ root@CentOS7 ]# gpg --list-keys
2、将 CentOS7 导出的公钥,拷贝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公钥加密一个文件
#将 CentOS7 导出的公钥
[ root@CentOS7 ]#gpg -a --export -o centos7.pubkey
#拷贝到 CentOS8 中
[ root@CentOS7 ]#scp centos7.pubkey root@(centos8的ip):/root/.gnupg
#centos8导入centos7拷过来的公钥
[ root@CentOS8 ]#gpg --import centos7.pubkey
#用从CentOS7主机导入的公钥,加密CentOS8主机的文件file,生成file.gpg
[ root@CentOS8 ]#gpg -e -r centos7 file
3、回到 CentOS7 服务器,远程拷贝 file.gpg 文件到本地,使用 CentOS7的私钥解密文件
#拷贝
[ root@CentOS7 ]#scp root@(centos8的ip):/root/file.gpg /root/
#解密
[ root@CentOS7 ]#gpg -d file.gpg
#也可以解密后导出到别的文件里
[ root@CentOS7 ]#gpg -o file -d file.gpg
或者重定向到别的文件
[ root@CentOS7 ]#gpg -d file.gpg > /data/file
4、在 CentOS8 中使用 openssl 软件创建 CA
centos8默认没有/etc/pki/CA/及子目录文件所以要自己创建
[ root@CentOS8 /etc/pki# mkdir -p ./CA/{certs,crl,newcerts,private}
#生成证书索引数据库文件
[ root@CentOS8 /etc/pki/CA# touch /etc/pki/CA/index.txt
#指定第一个颁发证书的序列号
[ root@CentOS8 /etc/pki/CA# echo 01 > /etc/pki/CA/serial
#生成给CA用的私钥
[ root@CentOS8 /etc/pki/CA# openssl genrsa -out private/cakey.pem 2048
#生成CA自签证书
[ root@CentOS8 /etc/pki/CA# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out /etc/pki/CA/cacert.pem
-----
Country Name (2 letter code) [XX]:CN #输入国家
State or Province Name (full name) []:henan #输入省份
Locality Name (eg, city) [Default City]:zhengzhou #输入城市
Organization Name (eg, company) [Default Company Ltd]:mage #单位名称
Organizational Unit Name (eg, section) []:it #部门
Common Name (eg, your name or your server's hostname) []:CA.mage.com #您的名字或服务器的主机名
Email Address []: #邮件地址
5、 在 CentOS8 中使用 openssl 软件创建一个证书申请请求文件,并使用上面的跟证书对其进行签署
#为需要使用证书的主机生成私钥
[ root@CentOS8 /etc/pki/CA# openssl genrsa -out ./certs/test.key 1024
#利用私钥生成申请文件(文件通常是以.csr为后缀)
[ root@CentOS8 /etc/pki/CA# openssl req -new -key ./certs/test.key -out ./certs/test.csr
#在CA签署证书并将证书颁发给请求者#默认要求 国家,省,公司名称三项必须和CA一致
[ root@CentOS8 /etc/pki/CA# openssl ca -in ./certs/test.csr -out ./certs/test.crt -days 730
6、吊销已经签署成功的证书
#在客户端获取要吊销的证书的serial
[ root@CentOS8 /etc/pki/CA# openssl x509 -in ./certs/test.crt -noout -serial -subject
serial=01
subject=C = CN, ST = henan, O = mage, OU = it2, CN = www.mage.com
[ root@CentOS8 /etc/pki/CA# cat ./index.txt
V 220906070933Z 01 unknown /C=CN/ST=henan/O=mage/OU=it2/CN=www.mage.com
#在CA上,根据客户提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致,吊销证书:
[ root@CentOS8 /etc/pki/CA# openssl ca -revoke newcerts/01.pem
Using configuration from /etc/pki/tls/openssl.cnf
Revoking Certificate 01.
Data Base Updated
[ root@CentOS8 /etc/pki/CA# cat index.txt
R 220906070933Z 200906090356Z 01 unknown /C=CN/ST=henan/O=mage/OU=it2/CN=www.mage.com
#指定第一个吊销证书的编号,注意:第一次更新证书吊销列表前,才需要执行
[ root@CentOS8 /etc/pki/CA# echo 01 > ./crlnumber
#更新证书吊销列表
[ root@CentOS8 /etc/pki/CA# openssl ca -gencrl -out ./crl.pem
Using configuration from /etc/pki/tls/openssl.cnf
[ root@CentOS8 /etc/pki/CA# cat crl.pem
-----BEGIN X509 CRL-----
MIIBvDCBpQIBATANBgkqhkiG9w0BAQsFADBNMQswCQYDVQQGEwJDTjEOMAwGA1UE
CAwFaGVuYW4xEjAQBgNVBAcMCXpoZW5nemhvdTENMAsGA1UECgwEbWFnZTELMAkG
A1UECwwCaXQXDTIwMDkwNjA5MjA1MVoXDTIwMTAwNjA5MjA1MVowFDASAgEBFw0y
MDA5MDYwOTAzNTZaoA4wDDAKBgNVHRQEAwIBATANBgkqhkiG9w0BAQsFAAOCAQEA
n2CBusJXLiWcD5WntlxCQArM3mJGCMVN0A1K7o1NK+dSKzp6/D4RiIEpSNqszC2T
kPXA0VzC3IoMLluZ/nzEv8aY9BD4QB7++7EsHVG9ieZbKUkvuOiGls7h1Hfbe7Mk
qQGXQouGi2JH/tvdh7gAI/8oAffvGqjKPvfWYIfdhCqPfi2wKm7hqYB1op87l2qh
FxJX6WJL3dvQ1w7/UEjJYQG4bn8YnPJqxTYhd4tjAUY46QIDh7niIH+CEeBxNaO1
daJe7qJVmas2vNVcdAq7AwMnxpXuww15WjMxda14VdlFt8BnhSGDn8xVBD2LZ0Y6
mKulHGhh4moCrWyOcxXywQ==
-----END X509 CRL-----
#查看crl文件(证书吊销列表)
[ root@CentOS8 /etc/pki/CA# openssl crl -in /etc/pki/CA/crl.pem -noout -text
Certificate Revocation List (CRL):
Version 2 (0x1)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C = CN, ST = henan, L = zhengzhou, O = mage, OU = it
Last Update: Sep 6 09:22:20 2020 GMT
Next Update: Oct 6 09:22:20 2020 GMT
CRL extensions:
X509v3 CRL Number:
2
Revoked Certificates:
Serial Number: 01
......