linux私钥和用户证书是什么,Linux系统安全之CA证书的颁发

*********************************************

一、加密算法

二、Openssl 工具使用

三、建立本地CA

四、证书颁发

五、FTP客户端验证

*********************************************

理论讲解篇

一、加密算法

1、对称加密(移位与置换完成的)

对称加密算法简介

在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。

对称加密的特点:

加密速度快,对称性加密通常在消息发送方需要加密大量数据时使用。

常用的对称加密有:

DES: (Data Encryption Standard)   56位

DES3: 3遍DNS加密

AES (Advanced ): 128, 192, 256  高级加密标准

注意:

AES虽然位数增加了一倍,但是复杂度可不仅仅是一倍

2、 非对称加密(数学函数实现的)

非对称加密简介

非对称加密算法需要两个密钥:公工密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法

非对称加密的特点:

算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快

注意:

公钥是从私钥提取而来;

非对称加密工作原理:

私钥加密的数据 --> 与之配对的公钥解密(同时完成了身份验证)

私钥加密数据,只有与之配对的私钥可以机密,此时由于公钥是公开的,所以所有人都可以解密了,那么此种加密方法还有什么意义呢?由于公钥与私钥是一一对应的,所以当我们能解密的时候,是不是验证了加密方的身份,这就是数子签名

公钥加密的数据 --> 与之配对的私钥解密(保证了数据的机密性)

发送方使用对方的公钥加密,这样只有对方有自己私钥,这样对方就可以解密了,此时保证了数据的机密性

对称加密与非对称加密配合使用

当数据量较大的时候,我们使用非对称加密,虽然能保证数据的安全性但是加密速度太慢;此时我们可以提取数据的特征码,然后使用对方的公钥加密特征码,使用对称加密加密数据,对方收到特征码与数据之后,使用自己的私钥解密特征码,并使用与发送方相同的算法解密数据,再次提取特征码,与收到的特征码做比较。如果完全相同,则说明数据是完整的,否则异然。

3、单向加密算法

单向加密算法可以用与提取数据的特征码

常用的单向算法有

md5:128      sha1:160  sha256   sha512

雪崩效应:

输入数据的微小改变会引起输出结果的巨大变化;

理论知识说了这么多,是不是有点晕啊。不要紧的让我们实操一次,帮助你快速理解0818b9ca8b590ca3270a3433284dd417.png

操作应用篇

二、Openssl工具使用

查看openssl版本信息

[root@localhost ~]# openssl version

OpenSSL 1.0.0-fips 29 Mar 2010

使用Des3加密文件

[root@localhost tmp]# cp /etc/fstab ./

[root@localhost tmp]# openssl enc -des3 -in fstab -e -out fstab.des3

enter des-ede3-cbc encryption password: #输入加密密码此处为redhat

Verifying - enter des-ede3-cbc encryption password:

[root@localhost tmp]# ls

fstab fstab.des3

[root@localhost tmp]# cat fstab.des3 #查看加密之后文件显示乱码

Salted__?.?�.x?..>.?Cm酋nJ+?W5?.

.?陆a?╂.).b?j.??

?T?..??.,林.罂g(*奄E&}fTEp^苜?

g

.R??qxk.`h?0.?-rg.逢.?Fr.`XA

.L*?7.j?..?魂<?腩 ?t民B,?K?..?R.]?1?~T%L??Y詹q?慝?K缜.4.淝CG?沪9.??-

陪.仙.?哈'f?.??..?..gd. dS逛钓.e.. .?筵.?.r*?.L?祗?6?F锵??dǔ#冯M?/?;Xd.羝.熏J???.L??w?

攵0z?.nyo蜚鲲`写ia.Hbe?凿.?.?9..9骄..???

D?涛~?s.@.ё[=8{?. %UO`?<.t. i. tmp xshellxshellxshellxshellxshellxshellxshell>

-bash: XshellXshellXshellXshellXshellXshellXshell: command not found

[root@localhost tmp]#

注释:

-des3指定加密算法

-e 代表加密 与之对应的-d代表解密

-in 指定加密文件

-out 指定输入文件

获取文件特征码

[root@localhost tmp]# openssl dgst -md5 fstab

MD5(fstab)= c9f4e510c6ee08857b2fee224fdbfdcd

[root@localhost tmp]#

修改fastab文件,在此查看特征码

[root@localhost tmp]# echo "123" >> fstab

[root@localhost tmp]# openssl dgst -md5 fstab #此时有巨大变化,是不是验证了雪崩效益

MD5(fstab)= 739fac6132b9d7178f898cb004457250

生成随机数

[root@localhost tmp]# openssl rand -hex 4 #生成8位随机数

034a06cc

[root@localhost tmp]# openssl rand -base64 4

T1+z2g==

[root@localhost tmp]#

生成私钥

[root@localhost tmp]# openssl genrsa 2048 > mykey.pri #生成2048位的私钥并保存为mykey.pri

Generating RSA private key, 2048 bit long modulus

...........................................+++

.........................+++

e is 65537 (0x10001)

[root@localhost tmp]# ll

总用量 12

-rw-r--r--. 1 root root 783 8月 15 18:42 fstab

-rw-r--r--. 1 root root 800 8月 15 18:28 fstab.des3

-rw-r--r--. 1 root root 1679 8月 15 19:12 mykey.pri

[root@localhost tmp]#

为了保证私钥的安全性,我们修改私钥的权限为700,在创建私钥的时候指定权限

[root@localhost tmp]# (umask 077; openssl genrsa -out mykey2.pri 1024)

Generating RSA private key, 1024 bit long modulus

......++++++

.......................................++++++

e is 65537 (0x10001)

[root@localhost tmp]# ll

总用量 16

-rw-r--r--. 1 root root 783 8月 15 18:42 fstab

-rw-r--r--. 1 root root 800 8月 15 18:28 fstab.des3

-rw-------. 1 root root 887 8月 15 19:19 mykey2.pri #权限700

-rw-r--r--. 1 root root 1679 8月 15 19:12 mykey.pri

[root@localhost tmp]#

通过私钥生成公钥

[root@localhost tmp]# openssl rsa -in mykey2.pri -pubout

writing RSA key

-----BEGIN PUBLIC KEY-----

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRvjEY+fKwIDny+g5ukY3RUd0S

0UlnS4Df3U5//T9xRYdRZizE/HlFKbGXzxtyGkuahkrVPDV9TVmaLnXsCl95smQc

w9Qv9K25KdH3ac/wIUfjwJG7qfdjZ/HR5RKXCCO+GejJ+0rQYwhgBVCzuN6Vokn/

XXcCP5I/CTgP8cFAZQIDAQAB

-----END PUBLIC KEY-----

此处说明了公钥是通过私钥生成的。。

三、自建立本地CA(证书颁发)

生成CA自己的私钥

[root@localhost ~]# cd /etc/pki/tls/

[root@localhost tls]# ls

cert.pem certs misc openssl.cnf private #openssl.cnf为主配置文件

[root@localhost tls]# cd ../CA/

[root@localhost CA]# ls

cacert.pem certs crl index.txt index.txt.attr index.txt.old newcerts private serial serial.old

[root@localhost CA]# (umask 077; openssl genrsa -out private/cakey.pem 2048)

Generating RSA private key, 2048 bit long modulus

......................................................................+++

..+++

e is 65537 (0x10001)

[root@localhost CA]#

为CA生成自签证书

0818b9ca8b590ca3270a3433284dd417.png

建立序列号文件和数据库文件

[root@localhost CA]# touch serial index.txt

[root@localhost CA]# echo 01 > serial

[root@localhost CA]#

至此CA创建完成,我们就可以为客户端颁发证书了

四、证书颁发

客户端(ftp)提交证书申请(IP:172.16.10.2)

生成私钥

[root@stu10 ~]# (umask 077; openssl genrsa -out vstpd.key 2048)

Generating RSA private key, 2048 bit long modulus

....+++

...+++

e is 65537 (0x10001)

[root@stu10 ~]# ls

制作一个证书签署请求:

0818b9ca8b590ca3270a3433284dd417.png

将签署请求文件copy到CA服务器上,CA签署(使用scp命令)

[root@stu10 ~]# openssl ca -in vsftpd.csr -out vstpd.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: Aug 15 06:01:00 2013 GMT

Not After : Aug 15 06:01:00 2014 GMT

Subject:

countryName = CN

stateOrProvinceName = Beijing

organizationName = xiaodong

organizationalUnitName = Tech

commonName = 172.16.10.1

X509v3 extensions:

X509v3 Basic Constraints:

CA:FALSE

Netscape Comment:

OpenSSL Generated Certificate

X509v3 Subject Key Identifier:

CA:39:D6:37:3B:E0:EF:70:6A:01:0B:DF:A1:2A:DC:7D:54:1E:0D:D7

X509v3 Authority Key Identifier:

keyid:33:1F:53:F8:CB:40:03:E2:DB:38:FF:6A:40:08:68:D9:91:25:89:BA

Certificate is to be certified until Aug 15 06:01:00 2014 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@stu10 ~]#

到此证书签署完成!!!

五、FTP客户端验证

IP:172.16.10.2 为vsftp服务器

[root@stu10 ~]# vim /etc/vsftpd/vsftpd.conf  #vsftpd配置

ssl_enable=YES #是否启用SSL

ssl_tlsv1=YES #是否使用TLS v1

ssl_sslv2=YES #是否使用SSl v2

ssl_sslv3=YES #是否使用SSL v3

allow_anon_ssl=NO #是否允许匿名用户使用SSL

force_local_data_ssl=YES #百匿名用户传输数据是否加密

force_local_logins_ssl=YES #非匿名用户登录时是否加密

rsa_cert_file/root/vstpd.crt #rsa证书文件位置

rsa_private_key_file=/root/vstpd.key #ftp私钥文件位置

[root@localhost ~]# service vsftpd restart #重启Ftp服务器

此时使用客户端验证证书是否生效

0818b9ca8b590ca3270a3433284dd417.png

本博文至此总结结束,由于多数内容都是个人理解,有不足之处,望广大博友多提宝贵意见。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值