Linux nginx 双向认证操作
时间: 2023-12-27 21:40:31 浏览: 91
linux nginx双向认证服务搭建
以下是在Linux系统上使用Nginx实现双向认证的简单步骤:
1. 生成数字证书和私钥
客户端和服务器都需要生成数字证书和私钥,可以使用openssl工具生成。在终端中输入以下命令:
```
# 生成服务器证书和私钥
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt
# 生成客户端证书和私钥
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout client.key -out client.crt
```
2. 配置Nginx服务器
在Nginx服务器的配置文件中,需要配置ssl_certificate和ssl_certificate_key参数来指定服务器的数字证书和私钥。在终端中输入以下命令:
```
# 编辑Nginx配置文件
sudo nano /etc/nginx/nginx.conf
# 添加以下配置
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/server.crt;
ssl_certificate_key /path/to/server.key;
ssl_client_certificate /path/to/ca.crt;
ssl_verify_client on;
location / {
root /var/www/html;
index index.html;
}
}
```
3. 配置客户端
客户端也需要配置数字证书和私钥,可以使用curl命令测试双向认证是否生效。在终端中输入以下命令:
```
# 添加客户端证书和私钥
curl --cert client.crt --key client.key https://example.com
```
4. 配置相互信任的CA证书
为了确保数字证书的可信度,客户端和服务器都需要配置信任的CA证书。在终端中输入以下命令:
```
# 生成CA证书
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ca.key -out ca.crt
# 配置服务器信任的CA证书
sudo mkdir /etc/nginx/ssl
sudo cp ca.crt /etc/nginx/ssl
sudo nano /etc/nginx/nginx.conf
# 在http段中添加以下配置
http {
ssl_client_certificate /etc/nginx/ssl/ca.crt;
ssl_verify_client on;
}
# 配置客户端信任的CA证书
sudo mkdir /etc/pki/ca-trust/source/anchors/
sudo cp ca.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust
```
5. 开启双向认证
在配置文件中设置ssl_client_certificate参数为CA证书路径,ssl_verify_client为on,即可启用双向认证。在终端中输入以下命令:
```
# 重启Nginx服务
sudo systemctl restart nginx.service
```
这样就完成了在Linux系统上使用Nginx实现双向认证的操作。
阅读全文