玩转一下 HTTPS 安全连接

发布于 2022-09-27 12:47:49 字数 4550 浏览 164 评论 0

两张示意图

标准的 TLS 认证示意图:standard (1-way) TLS auth:

TLS 加密通讯的示意图:

名词术语

  1. SSL(Secure Sockets Layer),现在应该叫 TLS,但由于习惯问题,我们还是叫 SSL 比较多
  2. 证书(Certificate) - *.cer *.crt
  3. OpenSSL - OpenSSL 是 SSL 规范的一个实现。理论上 SSL 规范是安全的,很难破解。但 SSL 实现就可能有些漏洞,如著名的 心脏出血。OpenSSL 还提供了一大堆强大的工具软件,强大到 90% 我们都用不到。
  4. X.509 一种证书标准,主要定义了证书中应该包含哪些内容。其详情可以参考 RFC5280,SSL 使用的就是这种证书标准。
  5. 私钥(Private Key) - *.key
  6. 证书签名请求(Certificate signing request) - *.csr
  7. BASE64 编码证书 - *.pem (privacy-enhanced mail)
  8. 二进制编码证书 - *.der
  9. 证书吊销列表(Certificate Revocation List) - *.crl
  10. PKCS(Public-Key Cryptography Standards),是由 RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准
  11. 那些证书相关的玩意儿(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12 等)
  12. SSL中,公钥、私钥、证书的后缀名都是些啥?

过程,参考 Mosquitto SSL Configuration -MQTT TLS Security

创建密码保护的私钥 openssl genrsa -des3 -out ca.key 2048

➜  tls openssl genrsa -des3 -out ca.key 2048
Generating RSA private key, 2048 bit long modulus
.....+++
....................................+++
e is 65537 (0x10001)
Enter pass phrase for ca.key:
Verifying - Enter pass phrase for ca.key:
➜  tls ls -lh
total 8
-rw-r--r--  1 bingoobjca  staff   1.7K  7 15 14:10 ca.key

使用私钥创建根证书 openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/C=CN/ST=BEIJING/L=BEIJING/O=BJCA/OU=SA/CN=bjca.cn"

➜  tls openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/C=CN/ST=BEIJING/L=BEIJING/O=BJCA/OU=SA/CN=bjca.cn"
Enter pass phrase for ca.key:
➜  tls ls -lh
total 16
-rw-r--r--  1 bingoobjca  staff   1.2K  7 15 14:16 ca.crt
-rw-r--r--  1 bingoobjca  staff   1.7K  7 15 14:10 ca.key

生成服务端私钥 openssl genrsa -out server.key 2048

➜  tls openssl genrsa -out server.key 2048
Generating RSA private key, 2048 bit long modulus
..............................+++
..................................................................................................................................+++
e is 65537 (0x10001)
➜  tls ls -lh
total 24
-rw-r--r--  1 bingoobjca  staff   1.2K  7 15 14:16 ca.crt
-rw-r--r--  1 bingoobjca  staff   1.7K  7 15 14:10 ca.key
-rw-r--r--  1 bingoobjca  staff   1.6K  7 15 14:18 server.key

生成服务端证书请求 openssl req -new -out server.csr -key server.key -subj "/C=CN/ST=BEIJING/L=BEIJING/O=BJCA/OU=SA/CN=bjca.cn"

注意:这里的 CN(Common Name)很重要,一般是域名。生成的证书请求,不需要真发送给证书机构,用作测试或者私有证书。

➜  tls openssl req -new -out server.csr -key server.key -subj "/C=CN/ST=BEIJING/L=BEIJING/O=BJCA/OU=SA/CN=bjca.cn"
➜  tls ls -lh
total 32
-rw-r--r--  1 bingoobjca  staff   1.2K  7 15 14:16 ca.crt
-rw-r--r--  1 bingoobjca  staff   1.7K  7 15 14:10 ca.key
-rw-r--r--  1 bingoobjca  staff   993B  7 15 14:21 server.csr
-rw-r--r--  1 bingoobjca  staff   1.6K  7 15 14:18 server.key

生成私有的服务端证书 openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 3650

➜  tls openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 3650
Signature ok
subject=/C=CN/ST=BEIJING/L=BEIJING/O=BJCA/OU=SA/CN=bjca.cn
Getting CA Private Key
Enter pass phrase for ca.key:
➜  tls ls -lh
total 48
-rw-r--r--  1 bingoobjca  staff   1.2K  7 15 14:16 ca.crt
-rw-r--r--  1 bingoobjca  staff   1.7K  7 15 14:10 ca.key
-rw-r--r--  1 bingoobjca  staff    17B  7 15 14:23 ca.srl
-rw-r--r--  1 bingoobjca  staff   1.2K  7 15 14:23 server.crt
-rw-r--r--  1 bingoobjca  staff   993B  7 15 14:21 server.csr
-rw-r--r--  1 bingoobjca  staff   1.6K  7 15 14:18 server.key

服务端需要: ca.crt, server,crt, server.key 三个文件

查看证书状态 openssl x509 -in ./server.crt -noout -text

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

对不⑦

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

玍銹的英雄夢

文章 0 评论 0

我不会写诗

文章 0 评论 0

十六岁半

文章 0 评论 0

浸婚纱

文章 0 评论 0

qq_kJ6XkX

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文