linux信息安全_SSL,PKI,CA篇
SSL,PKI,CA若互联网上面信息的传输信息不采取任何加密技术,那么所有的数据都是透明的,毫无隐私可言,于是加解密技术就应运而生了。古代的加密方式更容易被人记忆,比如早期古希腊采取的羊皮卷加密,战争时期密报采取的不同的数字替换技术,这些技术一旦被猜到,那真是弹指可破,随着计算机的计算能力的不断提高,加密技术也伴随者越来越复杂的算法运算,有些甚至在理论上被认为是不可破解的,当然这是根据如今
SSL,PKI,CA
若互联网上面信息的传输信息不采取任何加密技术,那么所有的数据都是透明的,毫无隐私可言,于是加解密技术就应运而生了。古代的加密方式更容易被人记忆,比如早期古希腊采取的羊皮卷加密,战争时期密报采取的不同的数字替换技术,这些加密的方法一旦被猜到和识破,真是弹指可破,随着计算机的计算能力的不断提高,加密技术也伴随者越来越复杂的算法运算,有些甚至在理论上被认为是不可破解的,当然这是根据如今的计算能力来评估的。
加密技术分类
加密技术主要分为:对称加密、非对称加密(公钥加密)、单向加密(不可逆加密)。
对称加密:加密和解密都使用同一个密钥
加密命令: openssl enc -e -des3 -a -salt -in file -out file.ciper
说明:enc是openssl的子命令,是一个标准命令,-a 是指使用base64编码
解密命令: openssl enc -d -des3 -a -salt -in file.ciper -out file.plain
说明:解密-in最好写在在-out的前面才行,因为我在cento6上面测试失败了。。。
非对称加密:由公钥和私钥组成一对密钥对,由私钥加密的内容只能由配对的公钥解密,由公钥加密的内容只能由配对的私钥解密
生成私钥命令:(umask 077; openssl genrsa -out privatefile 4096)
说明:genrsa的gen即是generate生成之意,用()括起来表示只对子shell起作用,不会影响当前shell的umask
提取publickey: openssl rsa -in privatefile -pubout
说明:这里的子命令ras不再是生成,只是提取
单向加密:密钥一旦被加密,就不可破解,比如使用md5、sha等算法提取的特征码,这就是不可逆的
加密命令: openssl dgst -md5 file.ciper 或 md5sum file.ciper
说明:以上俩命名都行,只有加密,因为是不可逆的,采用的是md5消息摘要算法来提取特征码的,也可以用SHA系列来提取特征码
扩展话题:对密码进行加密
使用命令:
openssl passwd -1 -salt 987654
openssl passwd -2 -salt `openssl rand -base64 4`
openssl passwd -4 -salt $(openssl rand -hex 8)
说明: -1,-2,-4是使用md5还是sha之类的,之前在用户权限管理那篇博客里面有总结,-salt即是加盐,-salt后面即是盐(随机数),可以直接指定,也可以由命令生成随机数,-hex是基于16进制编码格式,反引号 ``和$()均是命令引用的用法,达到的目的都是一样的
PKI
- 公钥设施
涉及:CA,RA,CRL以及证书存取库,其中CA是证书颁发机构,RA是证书注册机构,CRL是证书注销列表
CA
CA先得给自己颁发一个证书,这叫自签,然后才给别人颁发CA,就是给申请的人颁发或注销证书的,这主要应用于保证公钥的的可靠性,有效的制止了伪公钥的行为。
CA的自签和颁发:
- 自签:提供相应的证书目录及文件——生成私钥——生成自签证书
若公司的服务器要到专门的CA申请CA应该走这个流程;
本地服务器生成私钥——给CA机构发出证书申请——CA机构签署证书,证书里面包含了公钥及证书过期等信息,由专属人员到公司交付证书
若出现情况需要吊销证书:
公司给CA机构发出自己的序列号——CA机构核对序列号,若能匹配,则予以注销。并更新注销列表
- 自签证书:
说明:证书的默认配置文档说明在/etc/pki/tls/openssl.cnf,查看里面关于[CA_default] 的内容可以大体了解CA相关信息的存放位置。
1.创建CA下相关目录和文档
~]# mkdir /etc/pki/CA/{certs,crl,newcerts}
~]# touch /etc/pki/CA/{serial,index.txt}
说明:certs目录是存放已签证书的,crl目录是存放吊销证书的,newcerts是存放以序列号命令的证书的,与certs目录里面的证书签署顺序应该是对应的
而serial文档是存放序列号的,index.txt是存放证书数据库的地方,里面包含了证书的详细信息
2.生成私钥:
~]# (umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
说明,因为我们的证书除了我们自己不应该让其他任何人知道,因为用umask屏蔽掉除自己之外其他任何人的权限,而证书的签署加密方式用的是公钥加密里面的rsa非对称加密,创建的证书名称必须为cakey.pem,必须和配置文档里面的名称一样,而CA长度应该为2的整数次方,此处为2048,也可以为4096等。
3.生成自签证书
~# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/certs/cacert.pem -days 1095 ,如图:
说明:req代表申请的意思,-new即新的证书,-x509则表示自签,生成的证书应放在/etc/pki/CA/certs目录下,-days表示CA的有效期,这里自定义为3年;由此,自签证书申请完成。
- 服务器申请证书:
说明:这里以httpd服务为例
1.进入httpd服务器的配置文件目录/etc/httpd/conf/,创建ssl目录
~]# mkdir /etc/httpd/conf/ssl
2.生成服务器私钥:
[root@localhost ssl]# (umask 077;openssl genrsa -out httpd.key 4096)
3.生成证书请求书:
[root@localhost ssl]# openssl req -new -key httpd.key -out httpd.csr ,如图:
4.将证书发给CA,这里的CA颁发机构为自己公司,假设中间人工的证书来往流程走一遍。。。这里我们是自己公司,就不用找CA颁发机构了。
~]# openssl ca in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
不过过程中出错了:
~]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
Using configuration from /etc/pki/tls/openssl.cnf
Error opening CA certificate /etc/pki/CA/cacert.pem
140575814006688:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen('/etc/pki/CA/cacert.pem','r')
140575814006688:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400:
根据错误解决办法:
1)CA]# cp certs/cacert.pem . 将cacert.pem拷贝到/etc/pki/CA/下
2)CA]# echo 01 > serial 为证书生成序列号
错误解决了,(*^__^*) ,命令可以成功运行了,过程会问及是否签署证书[y/n]: 根据情况回答就成了。如此我们的的证书申请就通过了,生成证书httpd.crt放置到/etc/httpd/conf/ssl目录下,查看此目录下的文件截图为:
说明:httpd.csr已经没用了,此后若要在网页上认证,可通过浏览器导入证书
在客户端查看证书的信息:
[root@localhost /]# openssl x509 -in /etc/httpd/conf/ssl/httpd.crt -noout -serial -subject
serial=01
subject= /C=CN/ST=SiChuan/O=Think/OU=EB/CN=www.angrybeans.com/emailAddress=admin@think.com
说明:这里x509没有减号
- 证书的吊销:
1.先在服务器端查看看证书的信息和客户端发过来的是否匹配,
~]# cat /etc/pki/CA/index.txt
V 170113085137Z01unknown/C=CN/ST=SiChuan/O=Think/OU=EB/CN=www.angrybeans.com/emailAddress=admin@think.com
说明:V表示此证书已经签署了,匹配没问题吧,接下来开始吊销证书
2.吊销证书
~]# openssl ca -revoke /etc/pki/CA/newcerts/01.pem
Using configuration from /etc/pki/tls/openssl.cnf
Revoking Certificate 01.
Data Base Updated
~]# cat /etc/pki/CA/index.txt
R 170113085137Z160114092630Z01unknown/C=CN/ST=SiChuan/O=Think/OU=EB/CN=www.angrybeans.com/emailAddress=admin@think.com
3.生成吊销序列号以及更新吊销证书列表
~]# echo 01 > /etc/pki/CA/crlnumber
~]# openssl ca -gencrl -out /etc/pki/CA/crl/httpd.crl
Using configuration from /etc/pki/tls/openssl.cnf
4.查看吊销证书的内容:
~]# openssl crl -in /etc/pki/CA/crl/httpd.crl -noout -text
Certificate Revocation List (CRL):
Version 2 (0x1)
Signature Algorithm: sha256WithRSAEncryption
Issuer: /C=CN/ST=SiChuan/L=ChengDu/O=Think/OU=IT/CN=www.angrybeans.com/emailAddress=bean@think.com
Last Update: Jan 14 09:32:35 2016 GMT
Next Update: Feb 13 09:32:35 2016 GMT
CRL extensions:
X509v3 CRL Number:
2
Revoked Certificates:
Serial Number: 01
Revocation Date: Jan 14 09:26:30 2016 GMT
Signature Algorithm: sha256WithRSAEncryption
ad:77:c0:ae:28:6a:7b:b0:a4:b5:f8:ac:dc:68:ec:66:ac:1b:
1a:c7:d2:a9:b9:e0:da:f1:f7:64:3a:cb:ea:43:6c:d3:ea:10:
3b:bd:24:b3:6b:47:d1:cd:91:5a:b6:f0:d7:28:e3:44:19:b8:
63:12:ae:6a:42:02:2c:b8:70:96:03:f3:29:14:05:e5:1a:30:
25:9c:56:dd:e0:34:73:aa:f0:88:d7:fe:b5:f2:1c:25:c1:a5:
54:74:b6:99:70:5f:dc:6c:7f:4f:a1:69:77:e1:d7:ca:03:0a:
d2:88:92:df:3a:15:78:17:55:50:7d:9e:e1:4e:78:7d:f8:08:
ad:26:bd:d4:53:8d:76:9c:2b:da:2e:f1:ff:41:0c:d6:f9:10:
f7:1a:28:e7:e2:1e:2c:cb:2a:cc:b6:b6:98:1c:62:23:ab:d7:
cb:a5:8d:c8:52:a2:59:46:17:a1:6a:c4:18:ec:7b:93:06:3e:
ec:6e:c5:cf:fd:ff:ae:86:53:9e:62:97:c0:a8:d5:22:17:0c:
d5:ed:ef:b7:20:63:72:4e:e0:91:1d:6f:8f:bd:a2:76:5f:7f:
f0:31:95:5f:39:e0:ef:15:f9:fc:ed:63:89:31:5e:b4:3b:52:
a6:16:be:c3:ee:b5:8f:ba:73:3b:46:76:42:5a:e0:3e:ae:2a:
cf:3b:e8:1e
更多推荐
所有评论(0)