linux基础笔记-18-openssl

1. 加密

TCP/IP最初并没有考虑安全问题。

Alice–>Bob,这个通信过程面临以下问题:

  • 机密性:明文传输
  • 完整性:篡改
  • 认证

对称密码

解决机密性问题,但通信对象多时,无法管理密钥。

单向加密

  • 不可逆;
  • 输入一样,输出也一样;
  • 雪崩效应,输入有微小改变,输出会发生巨大改变;
  • 定长输出

但不能防御中间人攻击(MITM):截获明文,修改明文,重新计算hash。对应措施是将数据加密,密钥交换可以使用Diffie-Hellman。

公钥加密

公钥可以从私钥中提取出来。

发送方用自己的私钥加密数据,实现身份验证;

发送方用接收方的公钥加密数据,保证机密性;

但速度慢,并不用来加密数据。公钥密码的主要作用是认证。

真正的场景是用来加密hash,实现认证。

CA

获取某人的公钥需要借助于第三方机构,如公安认证的PKI,其核心为证书颁发机构CA。第三方机构也有自己的公钥私钥,在证书上附加签名。这时会发现获取公钥及证书的过程陷入了循环 -_-|

两种pki:TLS;OpenGPG

证书的格式叫做x.509

证书的费用一年几千到上万。

支付宝、淘宝交易时的认证需要借助银行,如早期的U盾,里面保存了你的证书。

CA维护了一个CRL(Certificate Revocation List)。获取证书时,先验证CA,在验证CRL。

应用

_________________________________________________________
|对称加密数据						 |					|
|    +-—————————+——————————————+    |    收方公钥加密的   |
|    +    数据  +  私钥加密hash +    |        对称密钥    |
|    +——————————+——————————————+    |				   |
—————————————————————————————————————————————————————————

2. ssl

TLS/SSL使用了x.509格式;

https:443端口。

ssl是一个库,应用于传输层和应用层之间。

基于ssl的ftp叫做ftps;基于ssh的ftp叫做sftp。

目前使用的有SSLv1,SSLv2,TLSv1.

openssl是ssl的开源实现。它有三部分:

  • libcrypto:加密库
  • libssl:基于会话实现机密性、完整性和认证的TLS/SSL协议库
  • openssl:多用途m命令行工具,实现私有CA

2.1 openssl

open开头的软件即开源。

openssl speed des,可以测试加密速度。

openssl enc -des,调用加密。

openssl dgst -sha1,调用hash

openssl passwd -l,生成用户密码

rsa用于处理密钥;rsautl可用来加密。

2.2 实现私有CA

如果想实现https服务器,就需要自己制作证书及CA。

  1. 生成一对密钥
  2. 生成自签署证书

2.2.1 生成一对密钥

openssl genrsa 2048生成指定位数私钥(公钥由私钥生成),可重定向 或-out;私钥应该加密存储,可指定参数。

(umask 077; openssl genrsa -out server2048.key 2048),括号表示命令组,它新开一个子shell。

openssl rsa -in server2038.key -pubout,输出公钥。

2.2.2 生成自签署证书

openssl req -new -x509 -key server2048.key -out server.crt -days 365,可申请有效期一年的x509证书。

openssl x509 -text -in server.crt可查看整数。

/etc/pki/tls/openssl.cnf有默认CA配置,根据这个配置文件,/etc/pki/CA目录下应当有certs,newcerts,crl3个子目录,还有index.txt,serial文件。


2.2.3 实例

/etc/httpd下创建ssl目录,(umask 077; openssl genrsa -out httpd.key 1024)

openssl req -new -key httpd.key -out httpd.csr, certificate signature request.

openssl ca -in httpd.csr -out httpd.crt -days 365

/etc/pki/tls/certs目录下有makefile,可以make httpd.pem生成测试私钥文件。注意,只是测试使用。makefile根据后缀判断文件类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值