Skip to content

Commit cce02f4

Browse files
committed
SSH Key 和 SSL Key 区别
1 parent 26def5a commit cce02f4

File tree

2 files changed

+83
-6
lines changed

2 files changed

+83
-6
lines changed

加密算法/RSA非对称加密算法/RSA密匙对生成.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff 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

7676
PKCS#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

152152
2、相比私钥,公钥格式更加统一和简单,不需要像私钥那样有多种不同的表示方式。
153153

154-
**公钥用途单一**
154+
**公钥用途单一**
155155

156156
公钥主要用于加密数据和验证数字签名。它不像私钥那样需要用于解密或生成签名等多种操作。因此公钥的格式要求相对简单,无需像私钥那样有多种表示方式来适应不同的应用场景。
157157

158-
**不涉及敏感信息**
158+
**不涉及敏感信息**
159159

160160
公钥是公开的,不涉及任何敏感信息。因此在使用时不需要像私钥那样需要特殊的安全处理。相比之下,私钥包含了敏感的密钥材料,需要采取更加谨慎的措施进行保护和管理。
161161

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
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`

0 commit comments

Comments
 (0)