TLS SSL

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: TLS SSL


HTTPS

HTTPS,全称为 Hypertext Transfer Protocol Secure,是一种通过加密通道传输数据的安全协议。它是 HTTP 协议的安全版本,用于在 Web 浏览器和 Web 服务器之间进行安全的数据传输。HTTPS 在传输过程中使用了 SSL(Secure Sockets Layer)或 TLS(Transport Layer Security)协议来加密数据,确保敏感信息在传输过程中不会被窃取或篡改。

http 缺点

通信使用明文(不加密),内容可能会被盗用

不验证通信方的身份,因此有可能遭遇伪装

无法证明报文的完整性,所以有可能已遭篡改

https

信息加密

完整性校验

身份验证

HTTPS = http + TLS/SSL

TLS SSL

TLS(Transport Layer Security)和 SSL(Secure Sockets Layer)是用于保护网络通信的安全协议。它们都提供了加密和认证机制,用于确保数据传输的机密性和完整性。

SSL 是最早的安全协议,而 TLS 是在 SSL 的基础上发展起来的。目前广泛使用的版本是 TLS 1.2 和 TLS 1.3。TLS 1.3 是最新的协议版本,在安全性、性能和功能方面有一些改进。

TLS 和 SSL 主要用于以下两个方面:

  1. 加密通信:TLS/SSL 使用加密算法来对数据进行加密,防止第三方截获和窃听通信内容。它可以确保数据在传输过程中的隐私性。
  2. 身份认证:TLS/SSL 还提供了身份验证机制,用于确认通信双方的身份,并确保数据只发送到正确的接收方。这可以防止恶意用户冒充其他用户或服务器。

SSL 是最早的用来做https

TLS 是SSL升级版 提高了安全性 并解决了SSL存在的一些安全性问题

SSl/TLS 工作原理类似的

HTTP

TLS/SSL 安全层

TCP

加密

  1. 对称加密

常见的算法有 AES DES 加密

举例 麒麟->星月发消息 但是他们的消息不想被别人知道,采用了对称加密,于是他们两个协商了一段密钥,今生永相随

麒麟:AES算法 + 密钥(今生永相随)+明文(吃面) = XMZSXMZS==

星月:使用AES + 密钥(今生永相随)+密文( XMZSXMZS==) = 吃面

  1. 非对称加密

常见算法有RSA DSA 加密

举例 麒麟->星月发消息,这次使用的是非对称加密,生成了公钥和私钥,公钥可以对外公开,私钥必须只能麒麟知道不能泄露。

星月:RSA + 公钥 + 明文(吃面) = XMZS==

麒麟:RSA + 私钥 + 密文(XMZS==) = 吃面

openSSL 生成私钥

openSSL 安装

Mac电脑自带了

windows

https://www.openssl.org/source/

在 SSL/TLS 加密通信中,一般需要使用三个文件来完成证书相关操作,即:

  1. 私钥文件(例如 “private-key.pem”),用于对加密数据进行解密操作。
  2. 证书签名请求文件(例如 “certificate.csr”),用于向 CA 申请 SSL/TLS 证书签名。
  3. SSL/TLS 证书文件(例如 “certificate.pem”),用于对客户端发送的请求进行验证,以确保通信安全可靠。

私钥文件用于对数据进行解密操作,保证了通信的机密性;证书签名请求文件包含了请求者的身份信息和公钥等信息,需要被发送给 CA 进行签名,从而获取有效的 SSL/TLS 证书;SSL/TLS 证书文件则包含了签名后的证书信息,被用于客户端和服务器之间的身份验证,以确保通信的安全性和可靠性。

通过使用这三个文件进行密钥交换和身份验证,SSL/TLS 可以实现加密通信以及抵御可能的中间人攻击,提高了通信的安全性和保密性。

openssl genpkey -algorithm RSA -out private-key.pem -aes256

openssl: OpenSSL 命令行工具的名称。

genpkey: 生成私钥的命令。

-algorithm RSA: 指定生成 RSA 私钥。

-out private-key.pem: 将生成的私钥保存为 private-key.pem 文件。

-aes256: 为私钥添加 AES 256 位加密,以保护私钥文件不被未经授权的人访问。

Enter PEM pass phrase qwe123 密码短语生成pem文件的时候需要

生成pem 证书文件

openssl req -new -key private-key.pem -out certificate.csr

  1. “req”: 表示使用 X.509 证书请求管理器 (Certificate Request Management) 功能模块。
  2. “-new”: 表示生成新的证书签名请求。
  3. “-key private-key.pem”: 表示使用指定的私钥文件 “private-key.pem” 来加密证书签名请求中的密钥对。
  4. “-out certificate.csr”: 表示输出生成的证书签名请求到文件 “certificate.csr” 中。该文件中包含了申请者提供的一些证书请求信息,例如公钥、授权主体的身份信息等。

Country Name (2 letter code) []:CN 国家

State or Province Name (full name) []:BJ 省份

Locality Name (eg, city) []:BJ 城市

Organization Name (eg, company)ZMY 组织或者是个人

Organizational Unit Name (eg, section) []:XMKJ 机构名称

Common Name (eg, fully qualified host name) []:localhost 域名

Email Address []: 邮箱地址

Please enter the following ‘extra’ attributes

to be sent with your certificate request

A challenge password []: 密码加盐 XMZSXMZSXMZS

openssl x509 -req -in certificate.csr -signkey private-key.pem -out certificate.pem

“x509”: 表示使用 X.509 证书管理器功能模块。

“-req”: 表示从输入文件(这里为 “certificate.csr”)中读取证书签名请求数据。

“-in certificate.csr”: 指定要读取的证书签名请求文件名。

“-signkey private-key.pem”: 指定使用指定的私钥文件 “private-key.pem” 来进行签名操作。一般情况下,签名证书的私钥应该是和之前生成 CSR 的私钥对应的。

“-out certificate.pem”: 表示将签名后的证书输出到文件 “certificate.pem” 中。该文件中包含了签名后的证书信息,包括签名算法、有效期、公钥、授权主体的身份信息等。

Enter pass phrase for private-key.pem: 密码短语

nodejs接口测试https

引入生成好的两个文件 certificate.pem private-key.pem

import https from 'node:https'
import fs from 'node:fs'
https.createServer({
    key: fs.readFileSync('private-key.pem'),
    cert: fs.readFileSync('certificate.pem'),
    //密码短语
    passphrase: 'qwe123'
}, (req, res) => {
    res.writeHead(200)
    res.end('success')
}).listen(443,()=>{
    console.log('server is running')
})

nginx配置https

终极大坑 如果在windows使用nginx配置https 私钥不能设置密码

  1. openssl genrsa -out nginx.key 2048 (生成私钥)
  2. openssl req -new -key nginx.key -out nginx.csr(生成签名文件)
  3. openssl x509 -req -in nginx.csr -signkey nginx.key -out nginx.crt(生成证书)

在nginx配置文件

server {
       listen       443 ssl;
       server_name  localhost;
       ssl_certificate      nginx.crt;
       ssl_certificate_key  nginx.key;
       ssl_session_cache    shared:SSL:1m;
       ssl_session_timeout  5m;
    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;
       location / {
           root   html;
           index  index.html index.htm;
       }
    }

目录
相关文章
|
24天前
|
安全 网络安全 数据安全/隐私保护
SSL/TLS证书**是一种用于加密网络通信的数字证书
SSL/TLS证书**是一种用于加密网络通信的数字证书
71 6
|
25天前
|
安全 算法 网络安全
SSL/TLS协议是什么?
SSL/TLS协议是什么?
99 57
|
1月前
|
缓存 安全 算法
SSL和TLS部署实践
在TLS中,所有安全性都以服务器的加密身份开始,这就需要一个强大的私钥来防止攻击者进行模拟攻击。同样重要的是拥有一个有效和强大的证书,它会授予私钥来代表一个特定的主机名。
51 2
|
1月前
|
存储 安全 算法
SSL和TLS部署实践
【10月更文挑战第28天】在TLS中,服务器的加密身份和强大私钥是安全基础,2048位RSA密钥足以满足大多数需求。保护私钥需在可信环境生成、加密存储、使用HSM、及时撤销旧证书、每年更新证书。确保证书覆盖所有域名,选择可靠CA,使用SHA256签名算法,配置完整证书链,禁用不安全加密套件,启用前向保密,使用会话重用机制,启用OCSP Stapling,加密整个网站,删除混合内容,安全设置Cookie,配置HSTS和CSP。
141 1
|
2月前
|
安全 网络安全 数据安全/隐私保护
【Azure Developer】System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel.
System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel.
|
2月前
|
JavaScript 安全 Java
谈谈UDP、HTTP、SSL、TLS协议在java中的实际应用
下面我将详细介绍UDP、HTTP、SSL、TLS协议及其工作原理,并提供Java代码示例(由于Deno是一个基于Node.js的运行时,Java代码无法直接在Deno中运行,但可以通过理解Java示例来类比Deno中的实现)。
81 1
|
4月前
|
监控 安全 Linux
在Linux中,如何管理SSL/TLS证书?
在Linux中,如何管理SSL/TLS证书?
|
3月前
|
消息中间件 安全 Kafka
Kafka支持SSL/TLS协议技术深度解析
SSL(Secure Socket Layer,安全套接层)及其继任者TLS(Transport Layer Security,传输层安全)是为网络通信提供安全及数据完整性的一种安全协议。这些协议在传输层对网络连接进行加密,确保数据在传输过程中不被窃取或篡改。
274 0
|
4月前
|
存储 Linux 网络安全
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Linux/Linux Container)
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Linux/Linux Container)
|
4月前
|
网络安全 API 数据安全/隐私保护
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Windows)
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Windows)
下一篇
DataWorks