【https】openssl的常用操作

前言

  • 最近补了https的知识。感觉收获很大,不知道为啥那么多人推荐图解http,感觉这书实现上都没说,跟启蒙书一样。。
  • 这篇如果读者看不懂建议先看一下读书笔记

环境

  • 实践系统为centos8,反正7应该也可以。
  • 首先写入一段文本,作为加解密的案例:
echo yehuozhili > msg.txt
  • 这样创建了个txt文本。

摘要加密

openssl dgst -md5 msg.txt
  • dgst就是digest缩写,表示摘要。
  • 中间的-sha1可以换成别的加密方式比如sha256 md5什么的。

对称加密

openssl enc -e -aes128 -k 123456 -a -in msg.txt -out enc_msg.txt
  • 其中,enc -e 表示加密, -k表示密码,-a表示base64 -in 表示来源文件 -out表示输出文件
  • 有可能会出现警告:
*** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
  • 它意思就是这个方法不安全,建议加上迭代次数和pbkdf2的算法来增加安全性:
openssl enc -e -aes128 -k 123456 -a -iter 100 -pbkdf2 -in msg.txt -out iter_enc_msg.txt
  • 这样就不会有警告了。
  • 解密方法就是enc -d
openssl enc -d -aes128 -k 123456 -a -in enc_msg.txt -out dee_msg.txt
  • 如果是有迭代次数加密的这种解法无法解密,需要增加迭代次数。
openssl enc -d -aes128 -k 123456 -a  -iter 100 -in iter_enc_msg.txt -out dee_msg.txt

非对称加密

  • 先生成私钥:
openssl genrsa -out private.key 1024
  • 最后的数字代表生成多少位的。
  • 然后根据私钥生成公钥:
openssl rsa -pubout -in private.key -out public.key
  • 这2就是一对了,然后使用公钥加密私钥解密:
openssl rsautl -encrypt -inkey public.key  -pubin -in msg.txt  -out rsa_msg.txt
  • 解密:
openssl rsautl -decrypt -inkey private.key -in rsa_msg.txt -out dersa_msg.txt
  • 私钥加密公钥解密实际一般是用签名,算摘要:
openssl dgst -sign private.key -sha256 -out sign.msg.txt msg.txt 
  • 公钥验证签名,需要对比源文件验证:
openssl dgst -verify public.key  -sha256 -signature sign.msg.txt msg.txt

自建ca机构

  • 一般证书都是别的机构颁发的,其实自己建一个只要敲几个命令就行了。有读者不懂得可以看一下读书笔记
  • 先生成ca得私钥:
openssl genrsa -out ca.priviate.key 2048
  • 使用ca私钥生成证书:
openssl req -new -x509 -key ca.priviate.key  -out ca.crt -days 365 -subj /C=CN/ST=Beijing/L=Beijing/O=ca/OU=ca/CN=www.ca.com/emailAddress=ca@qq.com
  • 这个参数名基本上一猜就知道是啥了。不给主题会以对话方式问你,也一样。

自建ca给自己颁证书

  • 然后我们需要用服务器私钥生成请求证书:
openssl req -new -key private.key -out server.csr  -subj /C=CN/ST=Beijing/L=Beijing/O=yehuozhili/OU=yehuozhili/
  • 这样就生成了个server.csr文件。
  • 再使用ca私钥给服务器请求证书签名:
openssl x509 -req -days 365 -CA ca.crt -CAkey ca.priviate.key  -CAcreateserial -in server.csr -out server.crt
  • 这样签名完成。拿到了服务器证书。
  • nginx配置证书:
    ssl_certificate  证书地址
    ssl_certificate_key 私钥地址
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

业火之理

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值