gpt4 book ai didi

启用 SSL/TLS - openssl

转载 作者:太空宇宙 更新时间:2023-11-03 13:46:11 25 4
gpt4 key购买 nike

来自 here ,我了解到,我们需要一个公钥和用户标识:

enter image description here创造企业社会责任


目标是在两个节点(客户端和服务器)之间建立 SSL/TLS 连接。

根据上图,我的理解是,将公钥作为输入来创建 CSR,但是步骤 4 使用私钥 (server-key.pem) 来创建 CSR(server.CSR)


第1步)创建证书颁发机构 key (私钥)

$ openssl genrsa -aes256 -out ca-key.pem 4096

步骤 2) 使用输入 (ca-key.pem) 创建证书颁发机构(根证书)

$ openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem

步骤 3) 为网络服务器创建私钥

$ openssl genrsa -out server-key.pem 4096

第 4 步 通过输入用户身份创建证书签名请求 (CSR)。这将依次创建公钥。

$ openssl req -subj "/CN=dockerbuild.harebrained-apps.com" -sha256 -new -key server-key.pem -out server.csr

第五步添加配置

$ echo subjectAltName = IP:40.xx.xx.164,IP:10.0.0.4,IP:127.0.0.1,DNS:dockerbuildsys.westus.cloudapp.azure.com,DNS:dockerbuild.harebrained-apps.com > extfile.cnf

第六步创建服务器证书

$ openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf

第七步创建客户端私钥

$ openssl genrsa -out key.pem 4096

第 8 步通过输入用户标识为客户创建 CSR

$ openssl req -subj '/CN=client' -new -key key.pem -out client.csr

Step 9) 客户端证书扩展文件

$ echo extendedKeyUsage = clientAuth > extfile.cnf

步骤 10) 创建客户端证书

$ openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf

步骤 11) 删除签名请求

$ rm -v client.csr server.csr

步骤 12) 删除 key 的写入权限

$ chmod -v 0400 ca-key.pem key.pem server-key.pem

第13步)为每个用户读取证书的权限

$ chmod -v 0444 ca.pem server-cert.pem cert.pem

Step 14) 在服务器端上传,证书颁发机构(ca.pem),服务器证书(server-cert.pem) &服务器 key (server-key.pem)


我对对称和非对称 key 加密有很好的理解。

我们使用非对称 key 来解决双方之间的 key 分配问题(对称 key )

据我所知,每个证书都有公钥+所有者身份(提供证书)


问题:

1) ca-key.pem, server-key.pem & key.pem 是对称 key 吗?

2) 为什么要创建证书颁发机构(ca.pem)?为什么我们需要私钥(ca-key.pem) 来创建证书颁发机构?

3) 为什么我们需要私钥来创建 CSR?因为它与图表(上图)相矛盾?

4) 为什么在创建证书之前创建证书签名请求(CSR)?客户端和服务器

5)为什么我们需要两个证书(服务器证书server-cert.pem & 客户端证书cert.pem)?

6) openssl req -subj "/CN=dockerbuild.harebrained-apps.com"-sha256 -new -key server-key.pem -out server.csr 创建服务器.csr 包含公钥+用户标识?如果是,这个公钥与证书(server-cert.pem)提供的公钥有何不同?

7) 如果上述过程中没有创建对称 key ,那么客户端和服务器如何加密通信?

8) server-key.pem/server-cert.pem/ca.pem(上传到服务器)如​​何与 key.pem/cert.pem/ca.pem(在客户端)?

最佳答案

1) Are ca-key.pem, server-key.pem & key.pem symmetric keys?

这些是非对称 key 。创建证书时根本不涉及对称 key 。对称 key 仅涉及 TLS 中的实际加密。

2) Why to create Certificate authority(ca.pem)? Why do we need a private key(ca-key.pem) to create Certificate authority? Because it contradicts with the diagram(above)

CA 是一个信任 anchor 。 CA 的私钥用于颁发(签署)新证书。包含公钥的 CA 证书受到想要验证证书的一方的信任。参见 SSL Certificate framework 101: How does the browser actually verify the validity of a given server certificate?更好地了解 CA 证书与叶证书和签名(使用私钥完成)如何协同工作。

实际上不需要 CA,即可以使用自签名证书。但在这种情况下,喜欢使用证书验证连接的每一方都需要事先了解它应该能够验证的每个自签名证书。这不能很好地扩展,即更容易显式信任 CA,然后从这种信任派生到 CA 颁发的证书中。

3) Why do we need a private key to create CSR? Because it contradicts with the diagram(above)?

CSR 被签名以证明您拥有与 CSR 中的公钥匹配的私钥(因此在未来的证书中)。

4) Why to create Certificate Signing Request(CSR) before creating a certificate? both client & server

通常,CSR 是由与 CA 不同的一方创建的。在这种情况下,CSR 是一个签名的容器,它提供有关该方希望颁发的证书的信息。创建证书在技术上不是必需的,但在组织上是必需的。

5) Why do we need two certificates(server certificate server-cert.pem & client certificate cert.pem)?

我们没有。通常只需要服务器证书来确保客户端与正确的服务器通信。只有相互身份验证才需要客户端证书,其中服务器也喜欢使用证书对客户端进行身份验证。

6) Does server.csr contain a public key + user identification? If yes, how this public key different from the public key provided by certificate?

CSR 中的公钥与证书中的公钥相同。证书中有用户特定信息(域),但 CA 在颁发证书之前必须通过其他方式验证这些信息是否确实正确(即用户拥有域)。

7) If there are no symmetric keys created in the above process, then how client & server communicate with encryption?

TLS 握手包含身份验证部分(根据证书检查服务器是否是预期的服务器)和 key 交换。后者生成用于加密应用程序数据的对称 key 。参见 How does SSL/TLS work?了解详情。

8) How server-key.pem/server-cert.pem/ca.pem(uploaded on server) work with key.pem/cert.pem/ca.pem(on client)?

服务器证书的私钥用于在 TLS 握手中签署一些挑战,以证明服务器拥有给定的证书。如果进行相互身份验证,则以类似的方式使用客户端证书的私钥。 CA 证书用于验证证书(再次参见 SSL Certificate framework 101: How does the browser actually verify the validity of a given server certificate? )。

关于启用 SSL/TLS - openssl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54502089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com