使用nginx实现HTTPS的严格传输安全
发布时间: 2024-05-02 11:25:37 阅读量: 80 订阅数: 35
详解Nginx服务器和iOS的HTTPS安全通信
![使用nginx实现HTTPS的严格传输安全](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9RRnpSZHo5bGliRWJhaWFiY3ZqcUU0RXBlR0tZNEJxTW1UMmJ0RHQzR002d0diZ3k2dm9UZ2ZmeGljZENzRVU0TDMzOFNoVzdHVGdpY2Rsd2t5N2tUZjA3TXcvNjQw?x-oss-process=image/format,png)
# 2.1 SSL证书的获取和安装
### 2.1.1 自签名证书的生成
自签名证书是一种由自身颁发机构(CA)签名的证书。它可以用于测试和开发环境,但不能用于生产环境。要生成自签名证书,可以使用以下命令:
```bash
openssl req -x509 -newkey rsa:4096 -keyout server.key -out server.crt -days 365
```
其中:
- `-x509` 指定生成自签名证书
- `-newkey rsa:4096` 指定生成 4096 位 RSA 密钥
- `-keyout server.key` 指定私钥文件名称
- `-out server.crt` 指定证书文件名称
- `-days 365` 指定证书有效期为 365 天
# 2. nginx配置HTTPS
### 2.1 SSL证书的获取和安装
#### 2.1.1 自签名证书的生成
自签名证书是一种由自己颁发机构(CA)签名的证书。它可以用于测试和开发目的,但不适合生产环境。要生成自签名证书,可以使用以下命令:
```
openssl req -x509 -newkey rsa:4096 -keyout server.key -out server.crt -days 365 -nodes
```
* **参数说明:**
* `-x509`: 生成自签名证书
* `-newkey rsa:4096`: 生成一个 4096 位的 RSA 私钥
* `-keyout server.key`: 私钥文件输出路径
* `-out server.crt`: 证书文件输出路径
* `-days 365`: 证书有效期(365 天)
* `-nodes`: 不生成密码保护的私钥
#### 2.1.2 商业证书的申请和安装
商业证书是由受信任的 CA 签名的证书。它们用于生产环境,可以向访问者保证网站的身份和安全性。要申请商业证书,需要向 CA 提交证书申请请求(CSR)。可以使用以下命令生成 CSR:
```
openssl req -new -key server.key -out server.csr
```
* **参数说明:**
* `-new`: 生成一个新的 CSR
* `-key server.key`: 使用指定的私钥
* `-out server.csr`: CSR 文件输出路径
将 CSR 提交给 CA 后,CA 会验证您的身份并签发证书。证书文件通常以 `.crt` 或 `.pem` 为扩展名。将证书文件复制到 nginx 的配置文件目录中。
### 2.2 nginx的HTTPS配置
#### 2.2.1 HTTPS监听端口的配置
要配置 nginx 监听 HTTPS 连接,需要在配置文件中添加以下指令:
```
server {
listen 443 ssl;
}
```
* **参数说明:**
* `listen 443 ssl`: 监听端口 443 并启用 SSL
#### 2.2.2 SSL协议和加密算法的设置
nginx 支持多种 SSL 协议和加密算法。要指定要使用的协议和算法,可以使用以下指令:
```
server {
listen 443 ssl;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256;
}
```
* **参数说明:**
* `ssl_protocols TLSv1.2 TLSv1.3`: 指定要使用的 SSL 协议(TLSv1.2 和 TLSv1.3)
* `ssl_ciphers`: 指定要使用的加密算法(ECDHE-RSA-AES256-GCM-SHA384、ECDHE-RSA-AES128-GCM-SHA256、ECDHE-RSA-AES256-SHA384、ECDHE-RSA-AES128-SHA256)
#### 2.2.3 证书和密钥文件的指定
最后,需要指定要使用的 SSL 证书和私钥文件:
0
0