File tree Expand file tree Collapse file tree 2 files changed +83
-6
lines changed
Expand file tree Collapse file tree 2 files changed +83
-6
lines changed Original file line number Diff line number Diff line change @@ -17,7 +17,7 @@ $ openssl genrsa -out private_key.pem length
1717
1818` openssl genrsa ` 命令默认生成的是 PEM 格式私钥文件,PEM (Privacy-Enhanced Mail) 是一种常见的密钥和证书格式,它使用 Base64 编码的 ASCII 文本表示密钥和证书,并且通常以 .pem 作为文件扩展名。
1919
20- 需要特别说明说明的一点是,openssl 在 3.0 之前 ` openssl genrsa ` 命令生成的私钥文件默认使用的是 PKCS #1 标准。但是从 3.0 开始,默认为 PKCS #8 标准。
20+ > 需要特别说明说明的一点是,openssl 在 3.0 之前 ` openssl genrsa ` 命令生成的私钥文件默认使用的是 PKCS #1 标准。但是从 3.0 开始,默认为 PKCS #8 标准。
2121
2222如何区分生成的私钥是 PKCS #1 标准还是 PKCS #8 标准呢?只需要打开生成的私钥文件,看开头和结尾内容标识即可:
2323
@@ -75,7 +75,7 @@ private_key.pem public_key.pem
7575
7676PKCS #8 格式是一种更通用的私钥格式标准(如果你使用的是 Java、C# 开发语言就需要将私钥转换为 PKCS8 格式),相比 PKCS #1 更加通用,可以表示任意类型的私钥,不仅限于 RSA。
7777
78- 特别说明:< ul > 如果你的 openssl 版本大于或等于 3.0,那么生成的私钥本身就是 PKCS #8 标准格式,无需再执行格式转换!</ ul >
78+ > ** 特别说明:** 如果你的 openssl 版本大于或等于 3.0,那么生成的私钥本身就是 PKCS #8 标准格式,无需再执行格式转换!
7979
8080命令如下:
8181
@@ -101,7 +101,7 @@ private_key.pem public_key.pem private_key_pkcs8.pem
101101
102102# DER 和 PEM 格式区别
103103
104- rsa 密匙对除了 PEM 格式之外,还有 DER 格式。简单地说,他们之间的区别只是内容形式不同。DER 使用二进制编码,文件内容是原始的二进制数据。而 PEM 使用 Base64 编码,文件内容是 Base64 编码的文本。另外:
104+ rsa 密匙对除了 PEM 格式之外,还有 DER 格式。简单地说,他们之间的区别只是内容形式不同。** DER 使用二进制编码,文件内容是原始的二进制数据。而 PEM 使用 Base64 编码,文件内容是 Base64 编码的文本。** 另外:
105105
106106** 可读性**
107107
@@ -147,15 +147,15 @@ openssl pkcs8 -topk8 -in private_key.pem -outform DER -out private_key_pkcs8.der
147147
148148** 公钥格式标准化**
149149
150- 1、公钥通常采用 X.509 标准,即以 -----BEGIN PUBLIC KEY----- 开头,-----END PUBLIC KEY----- 结尾的 PEM 格式。这已经成为公钥表示的事实标准。
150+ 1、公钥通常采用 X.509 标准,即以 “ -----BEGIN PUBLIC KEY-----” 开头,“ -----END PUBLIC KEY-----” 结尾的 PEM 格式。这已经成为公钥表示的事实标准。
151151
1521522、相比私钥,公钥格式更加统一和简单,不需要像私钥那样有多种不同的表示方式。
153153
154- ** 公钥用途单一**
154+ ** 公钥用途单一: **
155155
156156公钥主要用于加密数据和验证数字签名。它不像私钥那样需要用于解密或生成签名等多种操作。因此公钥的格式要求相对简单,无需像私钥那样有多种表示方式来适应不同的应用场景。
157157
158- ** 不涉及敏感信息**
158+ ** 不涉及敏感信息: **
159159
160160公钥是公开的,不涉及任何敏感信息。因此在使用时不需要像私钥那样需要特殊的安全处理。相比之下,私钥包含了敏感的密钥材料,需要采取更加谨慎的措施进行保护和管理。
161161
Original file line number Diff line number Diff line change 1+ ` SSH key ` 和通过 ` OpenSSL ` 生成的 ` SSL key ` 尽管都基于公钥加密技术,但是是两种不同用途的密钥。以下是它们的主要区别和用途:
2+
3+ # SSH Key
4+
5+ ** 用途:**
6+
7+ 用于通过 ` SSH(Secure Shell) ` 协议进行身份验证和安全通信。
8+
9+ ** 协议:**
10+
11+ 基于 ` SSH ` 协议。
12+
13+ ** 典型场景:**
14+
15+ 1、登录远程服务器时用于身份验证(无密码登录)。
16+ 2、Git 代码托管平台(如 GitHub、GitLab)上的身份验证。
17+
18+ ** 格式:**
19+
20+ 1、常见的 SSH 密钥格式是 ` PEM ` ,使用工具如 ` ssh-keygen ` 生成。
21+ 2、公钥通常保存在 ` ~/.ssh/id_rsa.pub ` 文件中,私钥保存在 ` ~/.ssh/id_rsa ` 文件中。
22+
23+ ** 加密算法:**
24+
25+ 常用算法包括 ` RSA ` 、` ECDSA ` 、` Ed25519 ` 等。
26+
27+ # SSL Key
28+
29+ ** 用途:**
30+
31+ 用于支持 ` TLS/SSL(Transport Layer Security / Secure Sockets Layer) ` 协议,保护网络通信的安全性。
32+
33+ ** 协议:**
34+
35+ 基于 ` TLS/SSL ` 协议。
36+
37+ ** 典型场景:**
38+
39+ 1、为网站配置 HTTPS。
40+ 2、在 Web 服务器(如 Apache、Nginx)中用于加密通信。
41+ 3、生成服务器证书或客户端证书。
42+
43+ ** 格式:**
44+
45+ 1、生成的密钥文件通常以 ` .key ` 或 ` .pem ` 结尾。
46+ 2、生成后,SSL 密钥常配合证书(如 ` .crt ` 或 ` .pem ` 文件)使用。
47+
48+ ** 加密算法:**
49+
50+ 1、支持 ` RSA ` 、` ECDSA ` 、` Ed25519 ` 等。
51+ 2、使用工具如 ` OpenSSL ` 生成私钥:
52+
53+ ``` bash
54+ openssl genrsa -out server.key 2048
55+ ```
56+
57+ 3、配合生成证书签名请求(CSR)和证书文件:
58+
59+ ``` bash
60+ openssl req -new -key server.key -out server.csr
61+ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
62+ ```
63+
64+ # 核心区别
65+
66+ | ** 属性** | ** SSH Key** | ** SSL Key** |
67+ | --------- | ------------------------------ | -------------- |
68+ | ** 主要用途** | 身份验证、远程登录 | 安全通信、数据加密 |
69+ | ** 协议** | SSH | TLS/SSL |
70+ | ** 生成工具** | ssh-keygen | OpenSSL |
71+ | ** 文件扩展名** | ` .pub ` (公钥), 无扩展名或 ` .pem ` (私钥) | ` .key ` , ` .pem ` |
72+ | ** 加密目标** | 用户身份、访问权限验证 | 加密传输数据、保护通信 |
73+
74+ # ** 总结**
75+
76+ 1、如果你要通过 SSH 远程连接服务器,请使用 ` SSH Key ` 。
77+ 2、如果你要为网站配置 HTTPS,请使用 ` SSL Key ` 。
You can’t perform that action at this time.
0 commit comments