加密、解密,以及OpenSSL建立私有CA

概述:

理论部分主要介绍了:

对称加密、非对称加密、单向加密、密钥交换、CA、PKI

操作部分主要有:

对称加密、非对称加密、单向加密的实现,已经openssl常用功能,生成密码、生成随机数已经使用openssl创建私有CA

系统环境说明:

[[email protected] ~]# cat /etc/redhat-release 
CentOS release 6.6 (Final)
[[email protected] ~]# 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 的公钥对那个证书上的签字进行验证,一旦验证通过,该证书就被认为是有效的。证书实际是由证书签证机关(CA)签发的对用户的公钥的认证。

问题:机构A发给用户A证书,机构B发给用户B证书,那么用户A和B还是不信任的,这个时候就需要有一个根CA,让所有证书颁发机构都信任根,用户就可以通过查询根得知此证书是否可信;如何保证用户在获取CA证书的时候被劫持,这点不用担心,操作系统提供商如微软的Windows在安装完成操作系统的时候就自动让你的计算机信任了根CA。

图解:没有根CA不同机构颁发的证书互不信任。

有了根CA之后,证书颁发机构信任根CA,不同证书颁发机构只要信任根CA那么颁发的证书都是受信任的。

查看内置在系统的受信任的根证书颁发机构

PKI公钥基础设施

签证机构:CA

用户在注册机构注册证书,CA就会签发用户的公钥认证,并且和申请者的信息绑定在一起并且签名后,以证书形式发给申请者,然后在本地的证书存取库备份。(可以理解成现实社会的公安部)

注册机构:RA

一般用户都是在这里注册证书(可以理解成现实社会的派出所)

证书吊销列表:CRL

如果用户私钥丢失,必须要申请吊销证书,否则可能会被别人冒名顶替。

证书存取库:

所有发出的证书都会在这里存一份,如果丢失证书可以在这里得到,如果丢失私钥那么只能申请证书撤销。

openssl

openssl的组成

libcrypto:加密、解密库文件;

libssl: ssl协议实现

openssl:多用途命令行工具,每种功能都使用专用的子命令来实现

子命令分类

[[email protected] ~]# 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文件

[[email protected] ~]# cp /etc/fstab . #不要拿源文件做测试
[[email protected] ~]# openssl enc -e -des3 -a -salt -in fstab -out fstab.des3 #执行加密操作
enter des-ede3-cbc encryption password: #输入解密时用到的密码
Verifying - enter des-ede3-cbc encryption password: #确认密码
[[email protected] ~]# 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=

解密:

[[email protected] ~]# 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文件的特征码

[[email protected] ~]# openssl dgst -md5 fstab
MD5(fstab)= 6f4e26d3eba397dd6aae68faf94bd3bd
使用md5工具提取的特征码和openssl提取的特征码是一样的
[[email protected] ~]# md5sum fstab
6f4e26d3eba397dd6aae68faf94bd3bd fstab

生成密码

语法:openssl passwd -1 -salt 8bits随机数

[[email protected] ~]# 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

[[email protected] ~]# (umask 077;openssl genrsa -out testkey 2048)  #生成私钥
Generating RSA private key, 2048 bit long modulus
.......................................................................................................+++
............................................................+++
e is 65537 (0x10001)
[[email protected] ~]# ll testkey
-rw------- 1 root root 1675 Apr 24 10:39 testkey 
[[email protected] ~]# 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生成随机数

[[email protected] ~]# openssl rand -hex 4
055f087e
[[email protected] ~]# openssl rand -hex 8
2bc72d93a394b402
[[email protected] ~]# openssl rand -hex 12
6f30309107e9397b34785b41

使用base64编码生成随机数

[[email protected] ~]# openssl rand -base64 4
eBMr8w==
[[email protected] ~]# openssl rand -base64 8
8raNX9PuChA=

使用openssl构建私有CA

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/

[[email protected] ~]# 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私钥文件存放位置

建立私有CA

(1) 生成私钥文件

[[email protected] CA]# (umask 077;openssl genrsa -out private/cakey.pem 2048)
Generating RSA private key, 2048 bit long modulus
.............................+++
........+++
e is 65537 (0x10001)

(2) 生成自签证书

[[email protected] 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 []:[email protected]  #管理员邮箱

参数说明:

-new: 生成新的证书签署请求;

-x509:直接输出自签署的证书文件,通常只有构建CA时才这么用;

-key:私钥文件路径,用于提取公钥;

-days N: 证书有效时长,单位为“天”;

-out:输出文件保存位置;

(3) 提供辅助文件

[[email protected] ~]# cd /etc/pki/CA/
[[email protected] CA]# touch index.txt   #生成索引文件
[[email protected] CA]# echo 01 > serial #生成序列号文件

给节点发证书

1、节点申请证书

在证书申请的主机上进行如下步骤:

(1) 生成私钥;

[[email protected] ~]# mkdir /etc/httpd/ssl
[[email protected] ~]# cd /etc/httpd/ssl/
[[email protected] 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要使用此主机在通信真实使用名字;

[[email protected] 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 []:[email protected]
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签发证书

[[email protected] 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 = [email protected]
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

查看所以和序列号文件已经有信息了

[[email protected] CA]# cat index.txt
V 160423055014Z 01 unknown /C=CN/ST=HA/O=YY/OU=Ops/CN=www.xmfb.com/[email protected]
[[email protected] 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

时间: 2024-10-09 05:38:43

加密、解密,以及OpenSSL建立私有CA的相关文章

加密解密与OpenSSL建立私有CA

安全规范: 1)NIST规定的数据安全性标准: ①保密性:数据保密性:隐私性: ②完整性:数据完整性:系统完整性 ③可用性:数据与服务随时可用 2)OSI,X.800:定义了安全攻击,安全机制,安全服务 ①安全攻击 被动攻击:监听 主动攻击:报文伪装.重放.消息篡改.拒绝服务(将有限资源耗尽,使得正常资源无法访问DDOS) ②安全机制 加密/解密,数字签名,访问控制,数据完整性保证,认证交换,数据填充,路由控制,人为公证 ③安全服务 认证 访问控制 数据保密性: 连接保密性 无连接保密性 选择域

加密解密以及OpenSSL建立私有CA

一次加密通信过程的建立: 发送方: 使用单向加密算法提取数据的 特征码:[单向加密算法] 单向加密>特征码+特征码 使用自己的 私钥 加密 特征码,附加在数据的后面:[公钥加密(非堆成加密)] 公钥加密>[特征码密文+数据] 生成用于 对称加密 的 临时密钥,并用此临时密钥 加密数据和加密的数据特征码.[对称加密] 对称加密>[密文[特征码密文+数据]] 使用接受方的公钥加密 临时密钥,附加在对称加密后的数据后方. 公钥加密(对方)>[临时密钥][密文[特征码密文+数据]] 接受方

加密/解密&利用OpenSSL构建私有CA

在互联网安全及个人隐私状况日益严峻的今天,加密技术变得尤为重要并且不可或缺.在密码雪中,加密是指将明文信息隐匿起来,使之在缺少特殊信息时不可读.本文所讲的主要是在互联网传输数据时所用的加密方式.我们都知道OSI&TCP/IP网络参考模型,通常我们会把这两个模型分为通信子网和资源子网两部分,但是在构建网络的初期,信息从发送端送达到接受端都非常困难所以在设计模型之初并没有考虑过多的安全因素,以至于通信子网和资源子网都没有涉及到数据加密的内容.为了解决这个问题,网景公司在资源子网和通信子网之间添加了半

加密、解密   以及OpenSSL建立私有CA

加密.解密,以及OpenSSL建立私有CA 加密技术是互联网最常用的安全保密手段,其利用技术手段把重要的数据加密后传送,到达目的地后再用相同或不同的手段进行解密. 加密技术包括两个元素:算法和密钥 常用的加密技术:对称加密.非对称加密.单向加密 以上几种加密技术各有千秋,经常组合起来使用 1.对称加密 加密和解密使用同一个密钥,将明文分隔成固定大小的块,逐个进行加密: 常见算法:DES  3DES  Twofish  IDEA  IDEA  CAST5  RC6 Blowfish 2.非对称加密

加密、解密以及OpenSSL建立私有CA

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法.常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用.大多数开源程序,商业软件加密核心都是基于openssl实现的. 数据安全性的基本法则: (1)数据的保密性:信息加密就是把明码的输入文件用加密算法转换成加密的文件以实现数据的保密.加密的过程需要用到密钥来加密数据然后再解密.没有了密钥,就无法解开加密的数据.数据加密之后,只有密钥要用一个安全的方法传送.加密过的数据可以公开地传送. (2)完整性:

加密解密、openssl、私有CA创建过程

一.加密解密 加密技术是对信息进行编码和解码的技术,编码是将原来可读信息(又称明文)译成代码形式(又称密文),其逆过程就是解码(解密),加密技术的要点是加密算法. 明文:发送人.接受人和任何访问消息的人都能理解的消息 密文:明文消息经过某种编码,得到的密文消息 加密:将明文消息变成密文消息 解密:将密文消息变成明文消息 算法:取一个输入文本,产生一个输出文本 加密算法:发送方进行加密的算法 解密算法:接收方进行解密的算法 单向加密算法:只能加密,不能解密,其作用是提取数据的特征码,来验证数据的完

OpenSSL建立私有CA

yum安装OpenSSL: 提示已经安装过了. openssl的主配置文件:/etc/pki/tls/openssl.cnf [CA_default] dir:CA的主目录 certs:已颁发证书的存储位置 crl_dir:已吊销证书的存储位置 database:证书索引文件 new_certs_dir:新颁发证书的存储位置 certificate:CA证书文件 serial:证书颁发时的当前序列号 crlnumber:吊销证书的当前序列号 crl:当前使用的CRL private_key:CA

使用Openssl构建私有CA

使用Openssl构建私有CA Openssl是SSL的开源实现,是一种安全机密程序,主要用于提高远程登录访问的安全性.也是目前加密算法所使用的工具之一,功能很强大. Openssl为网络通信提供安全及数据完整性的一种安全协议,包括了主要的密码算法.常用的密钥和证书封装管理功能(CA)以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用,例如我们将会使用Openssl实现私有CA,并实现证书颁发. OpenSSL:SSL的开源实现 libcrypto:通用加密库,提供了各种加密函数 lib

通过OpenSSL搭建私有CA及加密解密介绍

加密incode:对明文(可读懂的信息)进行翻译,使用不同的算法对明文以代码形式(密码)实施加密.该过程的逆过程称为 解密(descode),即将该编码信息转化为明文的过程 常见的加密算法和协议: 1.对称加密 2.公钥加密(非对称加密) 3.单向加密 4.认证协议 对称加密:加密和解密使用同一个密钥,依赖于,算法和密钥,其安全性依赖于密钥而非算法常见算法:DES.3DES. AES.Blowfish.IDEA.Twofish.CAST5.Rc6 特性:1)加密解密使用同一密钥