SSL/TLS启用-openssl

SSL/TLS启用-openssl,ssl,https,openssl,certificate,ssl-certificate,Ssl,Https,Openssl,Certificate,Ssl Certificate,从中,我了解到,我们需要公钥和用户标识: 创建企业社会责任 目标是在两个节点(客户端和服务器)之间建立SSL/TLS连接 根据上图,我的理解是,将公钥作为创建CSR的输入,但步骤4使用私钥(server key.pem)创建CSR(server.CSR) 步骤1)创建证书颁发机构密钥(私钥) 步骤2)使用输入(ca key.pem)创建证书颁发机构(根证书) 步骤3)为web服务器创建私钥 $ openssl genrsa -out server-key.pem 4096 步骤4)通过输

从中,我了解到,我们需要公钥和用户标识:

创建企业社会责任


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

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


步骤1)创建证书颁发机构密钥(私钥)

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

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

$ 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
步骤5)添加配置

$ 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
步骤6)创建服务器证书

$ 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 x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf
步骤7)创建客户端私钥

$ openssl genrsa -aes256 -out ca-key.pem 4096
$ openssl genrsa -out key.pem 4096
步骤8)通过输入用户标识为客户创建CSR

$ openssl req -subj '/CN=client' -new -key key.pem -out client.csr
步骤9)客户端的证书扩展文件

$ echo extendedKeyUsage = clientAuth > extfile.cnf
步骤10)创建客户端证书

$ 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 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)删除密钥的写入权限

$ chmod -v 0400 ca-key.pem key.pem server-key.pem
步骤13)为每个用户读取证书的权限

$ chmod -v 0444 ca.pem server-cert.pem cert.pem
步骤14)上传到服务器端、证书颁发机构(
ca.pem
)、服务器证书(
server-cert.pem
)和服务器密钥(
server-key.pem


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

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

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


问题:

1) 是
ca key.pem
server key.pem
key.pem
对称密钥吗

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

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

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

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

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

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

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

1) ca-key.pem、server-key.pem和key.pem是对称密钥吗

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

2) 为什么要创建证书颁发机构(ca.pem)?为什么我们需要私钥(ca key.pem)来创建证书颁发机构?因为它与图表(上图)相矛盾

CA是信任锚。CA的私钥用于颁发(签署)新证书。包含公钥的CA证书受喜欢验证证书的一方信任。请参阅,以更好地了解CA证书、叶证书和签名(使用私钥完成)是如何协同工作的

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

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

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

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

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

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

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

6) server.csr是否包含公钥+用户标识?如果是,此公钥与证书提供的公钥有何不同

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

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

TLS握手包含身份验证部分(检查