当前位置: 首页 > 文档资料 > 技术文档 Cookbook >

OpenSSL

优质
小牛编辑
139浏览
2023-12-01

RSA 公钥私钥

创建公钥私钥

1. 查看 openssl 版本

# openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017

2. 创建一个 2048 bit 私钥

# openssl genrsa -out private_key.pem 2048
Generating RSA private key, 2048 bit long modulus
...........................................+++
...................................................+++
e is 65537 (0x10001)

3. 查看 private_key.pem 内容

# cat private_key.pem
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAp+eyTek8adKOu4cka2LiVTXguMViNrmtVcRyp+mk5Rikh/AX
SfMj3w03ryEBmLj6oB6mWsYXxdvE7Uc+D8xt9ify+Kc8gBfb+dPz22XSur1gusgH
rL+9UpkiNsWt0sDLe8KfIB+8NSnhWpAzMzoxp2WtnLjR31WmWFjZ4VHcH7XPvVFC
jT3vmt/wknWT4u7YRJ484edUm4/sXjsFEmHTpx3nENScd+XQyW2Hp4IutmZzN0dz
J2d7IN9Zd/TGg6PPLrJ4U2KhZhzV15zNRgBUydAZzTkSjIVrpPSMo0Ak/iLel5ri
jdr734SvJoY3tLbw+TSG/JXAERR+GtBiwvfZMQIDAQABAoIBAQCdevcFlCiRqGcv
BAXooopeGXZ4VslTQruMogBX9RAvv/kxdsKhHWcboa4EmBSDRZvr6lNk+D772LDP
S+6tqrPIGJgPF+vqyHYNz/n8YXhQpabACTUJlZzgh7hLXwU1kpZHsbbFzn4b7vfq
lS0wcvh3ZSp8v+w4aIDohA13A+xN4BfXfVMsIde2Yx9z8BQfxyVlchBdqGlmnVIZ
WQ8ejtNhCresjiV3Q0V1+Mw4wTQJ0keld7fSUji8J110Fr0vfR0Tl+0T8Tz42Og+
2R7SxlGWX1f5u5S7gaZbyfivmx3kXD8N2TojU46oy0+tWnLSRetrPutuSjio7UuH
Le67rHCxAoGBANEAF2IMXtNHBnyyQDIn/0rhOFQWi/gw/5ZwaQP0BLSQVz1m6Vsm
lTfM1E7+H5k37d3Yen7GTkEO474g15eYn3VZfjNnjKWiBvEcb42UV7Qa+Lbd2qDy
Ys7KofFOXSDlJcJq+xF3OHNXQ48HIBHB1X0EWMvIY1yY4jizid+hw707AoGBAM2p
y/dJdY81IouE2iPGlV8wsKrwvJIURm7bRAAe44TPUQewyqUZgP08YHAlhcgCJr98
SjExbaz1PtpQWYAfKr9qu1rYWg2EDo8WfwEsQ8Wpyi7FX4y10ArljK2mZoQ5iBli
LpoLZk1w6CW75vSaAF16gRyFa2q8hhS9g20u2cyDAoGAEkN+x5urIa1gPL9a6sci
AQojYP3DZ4Hoo93Y33aQfrLqXLxEgimh+olUuD5uxnXjvHIxaiisJ/VEI5Y9IMs+
jAOxCo7u9H5vOtywRuACtgNxXpGOjGgCCG4erraZXsmHfjDZFdKkRTgH+FS4EbUt
kcoydERjonDdu/S8hKVfNIcCgYBTGcXpwMv4tp6jw2WlSQt4MCNinu2DFSA0kPKU
HecO9fom4l+vgHOnX2sURYUeAQiJHP6ZjABl/56K9iaD55QNTmIv3fXdOjvrw0pE
Pg+QYf/pECWApMJQdNp4HCGWUezVXN+5rNuEdRfIj3lN4qA9JU/gJ2T09wIyhTUC
vAiTYwKBgEMNj2M/Cvzv3v7tM8gYhogqZp3ksv8LhNjYk1F5mQrykXd0vyAckiZJ
5AX2H4kOYb1UIzEp7SJi39Lr2Hrz4fdjDOing+RRY/H+cCVNv21olS3nfJ6JEcm6
VFLte/lXx4FgODtd7+ewV/ek0HgqQQ8DOaljGDIEk2NNW05Vjigi
-----END RSA PRIVATE KEY-----

4. 生成共钥

# openssl rsa -in private_key.pem -outform PEM -pubout -out public_key.pem
writing RSA key

5. 查看 public_key.pem 内容

# cat public_key.pem
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp+eyTek8adKOu4cka2Li
VTXguMViNrmtVcRyp+mk5Rikh/AXSfMj3w03ryEBmLj6oB6mWsYXxdvE7Uc+D8xt
9ify+Kc8gBfb+dPz22XSur1gusgHrL+9UpkiNsWt0sDLe8KfIB+8NSnhWpAzMzox
p2WtnLjR31WmWFjZ4VHcH7XPvVFCjT3vmt/wknWT4u7YRJ484edUm4/sXjsFEmHT
px3nENScd+XQyW2Hp4IutmZzN0dzJ2d7IN9Zd/TGg6PPLrJ4U2KhZhzV15zNRgBU
ydAZzTkSjIVrpPSMo0Ak/iLel5rijdr734SvJoY3tLbw+TSG/JXAERR+GtBiwvfZ
MQIDAQAB
-----END PUBLIC KEY-----

加密/解密

1. 创建一任意文本

# echo 'This is a test Encrypting and decrypting file' > secret.txt

2. 使用共钥加密

# openssl rsautl -encrypt -pubin -inkey public_key.pem -in secret.txt -out secret.enc

3. 使用私钥解密

# openssl rsautl -decrypt -inkey private_key.pem -in secret.enc
This is a test Encrypting and decrypting file

创建一个 hash digest

1. 创建一个 hash digest

# openssl dgst -sha256 -sign private_key.pem -out secret.txt.sha256 secret.txt

2. 使用公钥验证

# openssl dgst -sha256 -verify public_key.pem -signature secret.txt.sha256 secret.txt
Verified OK

创建自签名证书

1. 创建 private key

openssl genrsa -out example.com.key 2048

2. 创建 CSR

openssl req -new -key example.com.key -out example.com.csr -subj "/C=CN/ST=BJ/L=BJ/O=IT/OU=IT/CN=example.com"

3. 创建证书

openssl x509 -req -days 3650 -in example.com.csr -signkey example.com.key -out example.com.crt

4. 查看创建的文件

# ls -l
total 12
-rw-r--r--. 1 root root 1159 Dec  9 16:02 example.com.crt
-rw-r--r--. 1 root root  980 Dec  9 16:02 example.com.csr
-rw-r--r--. 1 root root 1679 Dec  9 16:01 example.com.key

最后更新:

类似资料

  • 认证(Authentication) 身份验证是大多数现有应用程序的重要组成部分。有许多不同的方法、策略和方法来处理用户授权。我们最终决定使用什幺取决于特定的应用程序要求,并且与它们的需求密切相关。 passport 是目前最流行的 node.js 认证库,为社区所熟知,并相继应用于许多生产应用中。将此工具与 Nest 框架集成起来非常简单。为了演示,我们将设置 passport-http-bea

  • 下面是一个 XML 技术的列表。 XHTML (可扩展 HTML) 更严格更纯净的基于 XML 的 HTML 版本。 XML DOM (XML 文档对象模型) 访问和操作 XML 的标准文档模型。 XSL (可扩展样式表语言) XSL 包含三个部分: XSLT (XSL 转换) - 把 XML 转换为其他格式,比如 HTML XSL-FO (XSL 格式化对象)- 用于格式化 XML 文档的语言

  • AJAX不能独立工作。 它与其他技术结合使用来创建交互式网页。 JavaScript 松散类型的脚本语言。 在页面中发生事件时调用JavaScript函数。 整个AJAX操作的胶水。 DOM 用于访问和操作结构化文档的API。 表示XML和HTML文档的结构。 CSS 允许将演示样式与内容明确分开,并可通过JavaScript以编程方式进行更改 XMLHttpRequest 与服务器执行异步交互的

  • 可能因为是线下面,再加上公司内部信息流通比较快,一天内的上下午就面完了! 我个人还是对公司的业务非常感兴趣的!所以提前看过好几篇公司业务相关的文章 面试官人很nice,我俩基本上是我一答他一回应,所以我在这里重点挑自己印象里答得不好的地方写写。 技术面 堆和栈的区别?堆是怎么样的数据结构? 数组和链表的具体区别呢?优缺点?存取效率? 原型链?可以先答概念,在用Object和Array来解释各个指向

  • 用例是黑盒测试的功能测试,用于根据系统的使用从系统的开始到结束识别测试用例。通过使用这种技术,测试团队创建了一个测试场景,可以从头到尾根据每个功能的功能运行整个软件。 在这种情况下,有一个测试人员代表用户逐个使用系统的功能。在这种情况下,有一个演员代表用户使用软件系统的功能。 这描述了软件应用程序的逐步功能,可以通过一个例子来理解,假设存在在线资金转移的软件应用程序。转账的各个步骤如下: 用户登录

  • 主要内容:动态分区的缺点,需要分页动态分区的缺点 动态分区的主要缺点是外部碎片。 尽管这可以通过压缩来消除,但正如我们前面所讨论的那样,压缩使得系统效率低下。 我们需要找一种替代机制,以更优化的方式加载分区中的进程。 让我们讨论一个称为分页的动态灵活机制。 需要分页 让我们考虑一个大小为2 MB的进程P1和分为三个分区的主内存。 在三个分区中,两个分区是每个大小为1 MB的空洞。 P1需要在主存中加载2 MB空间。 我们有两个1M