理论部分主要介绍了:
对称加密、非对称加密、单向加密、密钥交换、CA、PKI
操作部分主要有:
对称加密、非对称加密、单向加密的实现,已经openssl常用功能,生成密码、生成随机数已经使用openssl创建私有CA
系统环境说明:
[root@bogon ~]# cat /etc/redhat-release CentOS release 6.6 (Final) [root@bogon ~]# uname -rm 2.6.32-504.el6.x86_64 x86_64
保密性:防止别人偷看
数据保密性
隐私性:信息不被随意的收集
完整性:防止别人修改
数据完整性:信息或程序只能被指定或授权的方式改变不能被随意的修改
系统完整性:确保系统以正常的方式执行预定的功能
可用性:数据与服务随时可用
对称加密算法使用同一密钥对提供安全的保护,加密和解密使用的是一个密钥。
加密和解密流程图:
(1) 两台服务器共享密钥,以使用同一个密钥进行加密和解密。
(2) 服务器A给服务器B发送数据,使用算法和密钥一起将数据加密,然后发送给服务器B。
(3) 服务器B接受到数据后,使用算法和密钥进行解密,得出明文数据。
说明:加密数据依赖与算法和密钥,安全性依赖于密钥。因为算法是公开的人人都可以得到,但是密钥只有通信的主机才有。
(1)DES:密钥长度为64位,其中8位用于奇偶校验,所以实际有效长度为56位;由于密钥长度较短,所以使用暴力破解可以很容易的在短时间内攻破DES算法,已经不建议使用该种算法。
(2)3DES:DES的增强版,因为3DES使用了三个阶段的DES,即同时使用了三个不同的56位密钥,所以相当于产生了一个168位的有效密钥长度。这种算法目前还没有计算机可以在短时间内破解。
(3)AES:3DES虽然现在是安全的,但随着计算机硬件的更新,总有一天要被攻破;AES算法欲取待3DES算法,他支持128,192和256位密钥长度,有效的密钥长度可达上千位。更重要的是,AES算法采用了更为高效的编写方法,对CPU的占用率较少;目前广泛使用。
商用:Blowfish,twofish,IDEA,RC6,CAST5等等...
1、加密、解密使用同一密钥
2、将明文分割成固定大小的块,逐个进行加密
1、密钥过多:如服务器A和服务器B通信需要一个密钥,和服务器C通信需要一个密钥,和服务器D通信需要一个密钥…………
2、密钥分发:如果服务器A和服务器B,之前没有进行过通信,需要共享密钥,但是这个过程是明文的。
非对称加密算法使用两个不同的密钥“公钥和私钥”进行加密和解密,用一个加密后的数据仅能被另一个密钥解密,而不能从一个密钥推出另一个密钥。
密钥对:私钥和公钥
私钥:仅允许个人使用
公钥:公开给所有人获取
公钥从私钥中提取而来;使用公钥加密的数据,只能使用与此公钥配对儿的私钥解密;反之依然
服务器A和服务器B传输数据。
初始状态:服务器B生成私钥和公钥。
服务器B将公钥给服务器A
服务器A使用公钥将数据加密,这个时候加密的数据就只有服务器B的私钥才可以解开,就连加密的服务器A都无法解开。
服务器A把数据传给服务器B,服务器B使用自己的私钥来解密数据,就得到了明文数据。
整个加密过程私钥都在服务器B上面,没有在公网传输,大大保证了数据的安全性。
身份认证:私钥拥有者用自己的私钥加密的数据,只要用其公钥能解密,即可认证其身份;
密钥交换:与被通信方通信之前,首先获取对方的公钥,自己生成一个对称加密的密钥,用对方的公钥加密,并发送给对方
数据加密:很少使用,一般都是用来加密码对称加密的密码
RSA:既能做身份认证又能做密钥交换,使用较为广泛
DSA:只能做数字签名(身份认证)
ELGamal:商业算法
就算法本身的实现来讲,公钥加密技术比对称加密技术的速度慢上差不多3个数量级,一个数量级就是10倍,所以3个数量级不是30倍,而是1000倍。因此,在加密数据时是很少用到公钥去加密的。
1、密钥长度较大,例如512bits, 2048bits, 4096bits
2、加密解密分别使用密钥对儿中的密钥相对进行;
3、常用于数据签名和密钥交换;
单向加密是提取数据的特征码(比如人的特征码就是人的指纹),保证了数据的完整性。
1、定长输出:无论原来的数据是多大级别,其加密结果长度一样;
2、雪崩效应:原始数据修小改变,将会导致结果巨大变化;
3、不可逆:不能通过特征码还原数据(就比如拿到一个人的指纹无法,还原一个人)
MD5:128bits定长输出
SHA1:160bits定长输出
SHA256:256bits定长输出
SHA384:384bits定长输出
SHA512:512bits定长输出
保证数据完整性:如在一个网站下载软件,为了验证软件在下载过程中没有被第三方修改,网站会提供一个MD5和软件的特征码,只要把MD5码下载下来和我们下载的软件进行运算就可以得到软件的特征码,只要这个特征码和网站提供的一样,说明软件没有被修改,如果不一样,百分之百是被修改了。
功能:保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生。
原理:数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。
公钥加密:通过非对称加密算法,加密对称加密算法的密钥,在用对称加密算法实际要传输的数据。
DH算法:前提发送方和接受方协商使用同一个大素数P和生成数g,各自产生的随机数X和Y。发送方将g的X次方mod P产生的数值发送给接收方,接受方将g的Y次方mod P产生的数值发送给发送方,发送方再对接收的结果做X次方运算,接受方对接收的结果做Y次方运算,最终密码形成,密钥交换完成。
上面描述的加密算法:无论是对称加密、非对称加密还是单向加密都是有缺点的。
对称加密:
(1) 密钥共享过程为明文
(2) 密钥过多不宜管理
(3) 无法保证数据完整性
公钥加密:
(1) 加密速度慢
(2) 无法保证数据完整性
单向加密:
无法加密数据,只是提取数据的特征码,也就是说有人可以看到数据,但是不能修改
加密过程就是将这几种加密算法的优点结合起来使用。
公钥加密保证对称加密密钥共享安全,对称加密保证加密速度,单项加密保证数据完整性。
下面是自己画图描述的一次加密数据和解密数据过程,不求精确但求理解。
发送者:
1、使用单向加密算法提取生成数据的特征码;
2、使用自己的私钥加密特征码附加在数据后面;
3、生成用于对称加密的临时密钥;用此临时密钥加密数据和已经使用私钥加密后的特征码;
4、使用接收方的公钥加密此临时密钥,附加在对称加密后的数据后方;
接收方:
1、使用自己的私钥解密加密的临时密钥;从而获得对称密钥;
2、使用对称密钥解密对称加密的 数据和私钥加密的特征码密文;从而获得数据和特征码密文;
3、使用发送方的公钥解密特征码密文,从而获得从计算生成的特征码;
4、使用与对方同样的单向加密算法计算数据的特征码,并与解密而来的进行比较;
公钥在网络传输过程中,无法保证可信度,容易被窃取或伪装,所以我们就需要一个受信任的第三方机构(CA),来保证公钥信息的安全分发。
如果用户想得到一份属于自己的证书,他应先向 CA 提出申请。在 CA 判明申请者的身份后,便为他分配一个公钥,并且 CA 将该公钥与申请者的身份信息绑在一起,并为之签字后,便形成证书发给申请者。
如果一个用户想鉴别另一个证书的真伪,他就用 CA 的公钥对那个证书上的签字进行验证,一旦验证通过,该证书就被认为是有效的。证书实际是由证书签证机关(CA)签发的对用户的公钥的认证。
问题:机构A发给用户A证书,机构B发给用户B证书,那么用户A和B还是不信任的,这个时候就需要有一个根CA,让所有证书颁发机构都信任根,用户就可以通过查询根得知此证书是否可信;如何保证用户在获取CA证书的时候被劫持,这点不用担心,操作系统提供商如微软的Windows在安装完成操作系统的时候就自动让你的计算机信任了根CA。
图解:没有根CA不同机构颁发的证书互不信任。
有了根CA之后,证书颁发机构信任根CA,不同证书颁发机构只要信任根CA那么颁发的证书都是受信任的。
查看内置在系统的受信任的根证书颁发机构
用户在注册机构注册证书,CA就会签发用户的公钥认证,并且和申请者的信息绑定在一起并且签名后,以证书形式发给申请者,然后在本地的证书存取库备份。(可以理解成现实社会的公安部)
一般用户都是在这里注册证书(可以理解成现实社会的派出所)
如果用户私钥丢失,必须要申请吊销证书,否则可能会被别人冒名顶替。
所有发出的证书都会在这里存一份,如果丢失证书可以在这里得到,如果丢失私钥那么只能申请证书撤销。
libcrypto:加密、解密库文件;
libssl: ssl协议实现
openssl:多用途命令行工具,每种功能都使用专用的子命令来实现
[root@localhost ~]# openssl #输入openssl进入交互式窗口 OpenSSL> help #输入help查看帮助信息 openssl:Error: ‘help‘ is an invalid command. Standard commands #标准命令 asn1parse ca ciphers cms crl crl2pkcs7 dgst dh dhparam dsa dsaparam ec ecparam enc engine errstr gendh gendsa genpkey genrsa nseq ocsp passwd pkcs12 pkcs7 pkcs8 pkey pkeyparam pkeyutl prime rand req rsa rsautl s_client s_server s_time sess_id smime speed spkac ts verify version x509 Message Digest commands (see the `dgst‘ command formore details) #消息摘要命令 md2 md4 md5 rmd160 sha sha1 Cipher commands (see the `enc‘ command for moredetails) #加密解密相关命令 aes-128-cbc aes-128-ecb aes-192-cbc aes-192-ecb aes-256-cbc aes-256-ecb base64 bf bf-cbc bf-cfb bf-ecb bf-ofb camellia-128-cbc camellia-128-ecb camellia-192-cbc camellia-192-ecb camellia-256-cbc camellia-256-ecb cast cast-cbc cast5-cbc cast5-cfb cast5-ecb cast5-ofb des des-cbc des-cfb des-ecb des-ede des-ede-cbc des-ede-cfb des-ede-ofb des-ede3 des-ede3-cbc des-ede3-cfb des-ede3-ofb des-ofb des3 desx idea idea-cbc idea-cfb idea-ecb idea-ofb rc2 rc2-40-cbc rc2-64-cbc rc2-cbc rc2-cfb rc2-ecb rc2-ofb rc4 rc4-40 seed seed-cbc seed-cfb seed-ecb seed-ofb zlib
工具:openssl enc, gpg
算法:des, 3des, aes, blowfish, twofish, idea, cast5
enc命令实现:
加密:openssl enc -e -CIPHERNAME -a -salt -in /PATH/FROM/SOMEFILE -out /PATH/TO/SOMECIPHERFILE
参数说明:
-e:表示加密
-CIPHERNAME:表示使用的算法
-salt:生成密钥
-a:ASCII格式输出文件
-in:加密的文件
-out:加密后的文件
解密:openssl enc -d -CIPHERNAME -a -salt -in /PATH/FROM/SOMECIPHERFILE -out /PATH/TO/SOMEFILE
参数说明:
-d:表示解密
-CIPHERNAME:表示使用的算法
-in:表示解密的文件
-out:表示解密后的文件
示例:加密和解密fstab文件
[root@localhost ~]# cp /etc/fstab . #不要拿源文件做测试 [root@localhost ~]# openssl enc -e -des3 -a -salt -in fstab -out fstab.des3 #执行加密操作 enter des-ede3-cbc encryption password: #输入解密时用到的密码 Verifying - enter des-ede3-cbc encryption password: #确认密码 [root@localhost ~]# cat fstab.des3 #查看加密后的文件 U2FsdGVkX19CxHIR6j2t9+XFju53/2aQ/+XjliloP+Vkm77fnLP5wBgjvh9k5NDl jc91+aT1Zt9/eHgfTC5wQ33wDbdpARAdztWt6LhTXjt3dp5nA41amKwfNvqG7wSz jsCDNSQR6kfuaYsSOVTqwyJadlr8B1Hm159tL4je29g/7bSynHSecQMJD4QsdtUm u+ILpFr9uR5p3stbsdK2u9q4hQHpNahoJkq6DMUH+c9X8V0047i+PAZrkTBHMKxJ 8fCJufwPWXJcr8MY71mmznLugKNUfeS1PklcLvriAzvpwUCwMO0l1+b9odv4TrLp HAAK9CoNbs7A1eF7+mgLepML34YF31WrqkjHEWBdod+t1J1cjeC24pDKfdk407gG kAUPip0DF2uVdNOonT+ervnyAAkdoEzNxujc7CSzbwHEh22MpszKzIaDw5/fbWnf m8iw8MR+D64MLZTw2EM11fLJlVImpRRvOiRIWHYOjncnzeBUBGAGAP0CrEXOGBC/ 2+Qk7NxoMYE+7FA8g49vpfZK7my+WmCSckPMidg8+yrCJjy4sGx82G0E7Cs4K2ya QKz0mbm4G0xNWxYABFjgsT+lMEaUAXtjpU3d1zlTYcm8FVkJThi+vqWB05dPJR1Q 75sd1l70TOKKcxysLkM+ks1jW1JBnkS3gSTcEUlgHiZ9kjQHZjnff4NwlcumRVQ9 H6t8xbG0XDxzY2k8EQrOyq4ekUJ4ZF3twRKpeaVu5VvQxnuPlLCv7FJQYQoc2WD4 bYo69pT5I99X8XrqXJGvXcTPPLocdJq/734XovpmVkm1bEZAzyQQVlT4cJIefQjN HOx2bFTKpRLz8gAowz+4v0P5sRA2cCUzp3yHFUMzJqmqoBG+yVxTtD/LreMLZP0c tVR5oOWoPkRlkVHXKLwpJ5ng6VfDKK5paIXhUFitCDhFZC7MBn6xkHHWAXMMv7dW 70Ptn0+V9uTc0iM/KZJRb3KpDXQKKw/ItvSBPBMNZATDTDByh4A8o9hzPDG+x+Br Cf52oUoxYQ89UaoaKLNtHuj7TVhVzUg/mULWMvJ1b2Yh81ANM1NIvfh96CslfLbT 3GaPtyEDG6cYREXZTFTkZy9f3t/eDS0JHwFW7+jDYWdvSnpVEjxY1tID/MDUcA2F F+ENwTNcRP+UC1qDgGpV7PP51rD0QKG+0vnMg7vx2koz/+Z4QrTs0UKwLmRZ8Z2r lcFflZWX+YPH81esvgbmPEHnRt9q/OaJvW/VdjGhuvc=
解密:
[root@localhost ~]# openssl enc -d -des3 -a -salt -in fstab.des3 -out fstab.new #对文件进行解密 enter des-ede3-cbc decryption password: #输入加密时的密码
算法:md5, sha1
工具:openssl dgst, md5sum, sha1sum, sha224sum, sha256sum, sha384sum, sha512sum
语法:openssl dgst -CIPHER /PATH/TO/SOMEFILE...
示例:提取fstab文件的特征码
[root@localhost ~]# openssl dgst -md5 fstab MD5(fstab)= 6f4e26d3eba397dd6aae68faf94bd3bd 使用md5工具提取的特征码和openssl提取的特征码是一样的 [root@localhost ~]# md5sum fstab 6f4e26d3eba397dd6aae68faf94bd3bd fstab
语法:openssl passwd -1 -salt 8bits随机数
[root@localhost ~]# openssl passwd -1 -salt 12345678 Password: #输入密码 $1$12345678$0ME5N6oDyoEAwUp7b5UDM/ #输出的加密密码
说明:就算密钥一样,只要salt的随机数不一样,那么输出的加密密码就是不一样的,也就无法反推出密码。
操作过程:生成私钥,从私钥中提取公钥;
生成私钥
# openssl genrsa -out /PATH/TO/PRIVATE_KEYFILE NUM_BITS #生成的私钥文件权限为644
#(umask 077; openssl genrsa -out /PATH/TO/PRIVATE_KEYFILE NUM_BITS) #生成的私钥文件权限为600
注意:在bash命令行上放在小括号中执行的命令,其实是通过打开一个子shell进程进行的;
从私钥中手动提取公钥:
# openssl rsa -in /PATH/FROM/PRIVATE_KEY_FILE –pubout
示例:生成一个名为testkey的私钥,长度为2048
[root@localhost ~]# (umask 077;openssl genrsa -out testkey 2048) #生成私钥 Generating RSA private key, 2048 bit long modulus .......................................................................................................+++ ............................................................+++ e is 65537 (0x10001) [root@localhost ~]# ll testkey -rw------- 1 root root 1675 Apr 24 10:39 testkey [root@localhost ~]# openssl rsa -in testkey -pubout #从私钥中提取公钥 writing RSA key -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAukSrEO8CX0x43SjqAl/M 831NFdBTRWCBZydtXF5K2ilj/7X87XTImBUsYPqTBP6CvfI0VQA7f5yRLI7voljU qcdgVv3PY8mAiHNkAbP8QFOmdJqgV89K5LqNVwfUbSUEy0LZIskONoGpJox6S0sQ fQwAnAvLgvfsYhW63B/hAqISWZjHeCiIJAX8CuPL7CJjDKKKefHzY0xoxfjlChWa y8Y88roqhoPSL22a7KOin8LhBien8pjQf2U6J7MT3ewnvt+mcCnpj8azBadpvUs8 JK7pQMgUdL5cHyUTissYMV3hwKAwMKbf1A9G5ruZUAYaQGWJHpwUzMMf+xDWADq0 9QIDAQAB -----END PUBLIC KEY-----
语法:openssl rand -hex|-base64 NUM
使用hex生成随机数
[root@localhost ~]# openssl rand -hex 4 055f087e [root@localhost ~]# openssl rand -hex 8 2bc72d93a394b402 [root@localhost ~]# openssl rand -hex 12 6f30309107e9397b34785b41
使用base64编码生成随机数
[root@localhost ~]# openssl rand -base64 4 eBMr8w== [root@localhost ~]# openssl rand -base64 8 8raNX9PuChA=
1、生成私钥
2、生成自签署证书
(1) 私钥用于签发证书时,向证书添加数字签名使用;
(2) 证书:每个通信方都导入此证书至“受信任的证书颁发机构”
配置文件:/etc/pki/tls/openssl.cnf
[ CA_default ] dir = /etc/pki/CA #指明CA的工作目录 certs = $dir/certs #以颁发证书的存储位置 crl_dir = $dir/crl #已吊销证书的吊销列表的存储位置 database = $dir/index.txt #证书索引文件 new_certs_dir = $dir/newcerts #新创建证书存放位置 certificate = $dir/cacert.pem #CA自己证书的存放位置 serial = $dir/serial #序列号,证书生成就从这里获得序列号,每签署一个序列号自动加一 crlnumber = $dir/crlnumber #定义证书吊销编号 crl = $dir/crl.pem #当前正在使用的crl private_key = $dir/private/cakey.pem #CA自己的私钥文件 RANDFILE = $dir/private/.rand #随机数的获取位置
补充:如果向了解更多参数,可以打开配置文件旁边有英文注释
工作目录:/etc/pki/CA/
[root@localhost ~]# ll /etc/pki/CA total 16 drwxr-xr-x. 2 root root 4096 Oct 15 2014 certs #证书文件存放位置 drwxr-xr-x. 2 root root 4096 Oct 15 2014 crl #证书吊销列表存放位置 drwxr-xr-x. 2 root root 4096 Oct 15 2014 newcerts #新创建证书存放位置 drwx------. 2 root root 4096 Oct 15 2014 private #CA私钥文件存放位置
(1) 生成私钥文件
[root@localhost CA]# (umask 077;openssl genrsa -out private/cakey.pem 2048) Generating RSA private key, 2048 bit long modulus .............................+++ ........+++ e is 65537 (0x10001)
(2) 生成自签证书
[root@localhost CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650 You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter ‘.‘, the field will be left blank. ----- Country Name (2 letter code) [XX]:CN #输入国家名 State or Province Name (full name) []:HA #省 Locality Name (eg, city) [Default City]:ZZ #市 Organization Name (eg, company) [Default Company Ltd]:YY #公司 Organizational Unit Name (eg, section) []:Ops #部门 Common Name (eg, your name or your server‘s hostname) []:ca.server.com #主机名 Email Address []:cadmin@server.com #管理员邮箱
参数说明:
-new: 生成新的证书签署请求;
-x509:直接输出自签署的证书文件,通常只有构建CA时才这么用;
-key:私钥文件路径,用于提取公钥;
-days N: 证书有效时长,单位为“天”;
-out:输出文件保存位置;
(3) 提供辅助文件
[root@localhost ~]# cd /etc/pki/CA/ [root@localhost CA]# touch index.txt #生成索引文件 [root@localhost CA]# echo 01 > serial #生成序列号文件
1、节点申请证书
在证书申请的主机上进行如下步骤:
(1) 生成私钥;
[root@localhost ~]# mkdir /etc/httpd/ssl [root@localhost ~]# cd /etc/httpd/ssl/ [root@localhost ssl]# (umask 077;openssl genrsa 1024 > httpd.key) Generating RSA private key, 1024 bit long modulus .........................................++++++ .............................++++++ e is 65537 (0x10001)
(2) 生成证书签署请求;
注意:
(a) 其中的subject信息部分,要与CA的保持一致;
(b) Common Name要使用此主机在通信真实使用名字;
[root@localhost ssl]# openssl req -new -key httpd.key -out httpd.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter ‘.‘, the field will be left blank. ----- Country Name (2 letter code) [XX]:CN State or Province Name (full name) []:HA Locality Name (eg, city) [Default City]:ZZ Organization Name (eg, company) [Default Company Ltd]:YY Organizational Unit Name (eg, section) []:Ops Common Name (eg, your name or your server‘s hostname) []:www.xmfb.com Email Address []:webadmin@xmfb.com Please enter the following ‘extra‘ attributes to be sent with your certificate request A challenge password []: An optional company name []:
(3)把请求发送给CA;
可以通过ssh协议,或者其他安全的方式发给CA,由于这里是实验环境,在一台主机上所以这个步骤省略了
2、CA签发证书
[root@localhost ssl]# openssl ca -in /etc/httpd/ssl/httpd.csr -out /etc/httpd/ssl/httpd.crt -days 365 Using configuration from /etc/pki/tls/openssl.cnf Check that the request matches the signature Signature ok Certificate Details: Serial Number: 1 (0x1) Validity Not Before: Apr 24 05:50:14 2015 GMT Not After : Apr 23 05:50:14 2016 GMT Subject: countryName = CN stateOrProvinceName = HA organizationName = YY organizationalUnitName = Ops commonName = www.xmfb.com emailAddress = webadmin@xmfb.com X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: 82:3D:91:0D:E5:95:5B:36:D3:27:5B:ED:06:14:EA:3C:CF:77:93:08 X509v3 Authority Key Identifier: keyid:5A:13:24:DF:EC:9A:E9:29:7E:C1:45:7C:A2:57:2A:8E:D0:4D:B1:BF Certificate is to be certified until Apr 23 05:50:14 2016 GMT (365 days) Sign the certificate? [y/n]:y #确认信息 1 out of 1 certificate requests certified, commit? [y/n]y #确认是否提交 Write out database with 1 new entries Data Base Updated
查看所以和序列号文件已经有信息了
[root@localhost CA]# cat index.txt V 160423055014Z 01 unknown /C=CN/ST=HA/O=YY/OU=Ops/CN=www.xmfb.com/emailAddress=webadmin@xmfb.com [root@localhost CA]# cat serial 02
吊销证书:
1、获取吊销证书的序列号;
# openssl x509 -in /PATH/FROM/CRT_FILE -noout -serial -subject
2、实现证书吊销
(1) 吊销证书
# openssl ca -revoke /PATH/FROM/CRT_FILE
(2) 生成吊销证书的编号
echo 01 > /etc/pkie/CA/crlnumber
(3) 更新证书吊销列表
# openssl crl -gencrl -out THISCA.crl
原文地址:http://ximenfeibing.blog.51cto.com/8809812/1638407