当前位置: 首页 > news >正文

NGINX配置https双向认证(自签一级证书)

一 生成自签证书

以下是生成自签证书(包括服务端和客户端的证书)的步骤,以下命令执行两次,分别生成客户端和服务端证书和私钥。具体执行可以先建两个目录client和server,分别进入到这两个目录下执行下面的命令。

  1. 生成私钥
    首先,你需要生成一个私钥。通常使用RSA算法,你可以通过以下命令生成一个2048位的私钥:

    openssl genrsa -out private.key 2048
    

    这里private.key是你的私钥文件名。

  2. 生成证书签名请求(CSR)
    使用私钥生成一个证书签名请求(CSR)。在这一步,你需要提供一些组织和个人的信息。

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

    执行此命令后,OpenSSL会提示你输入一些信息,如国家代码(C)、州或省份(ST)、城市(L)、组织名称(O)、通用名称(CN)等。这些信息将被包含在你的CSR中。

  3. 生成自签证书
    最后,使用私钥和CSR生成自签证书。你可以指定证书的有效期。

    openssl x509 -req -days 365 -in csr.csr -signkey private.key -out certificate.crt
    

    -days 365表示证书有效期为365天。certificate.crt是生成的自签证书文件名。

  4. 验证证书
    你可以使用以下命令来验证生成的证书:

    openssl x509 -in certificate.crt -text -noout
    

    这个命令会显示证书的详细信息,确保所有信息都是正确的。

  5. (可选)生成PEM格式的证书链文件
    如果你需要将自签证书和中间证书(如果有的话)合并成一个PEM格式的文件,可以使用以下命令:

    cat certificate.crt intermediate.crt > chain.pem
    

    如果你只有一个自签证书,这一步可以跳过。

  6. 重命名证书
    利用上面的命令可以得到私钥[private.key]和证书[certificate.crt],为了区分服务端和客户端,将其重新命名为[private-client.key]/[certificate-client.crt]和[private-server.key]/[certificate-server.crt]

二 生成浏览器端验证时需要导入到windows中的pfx文件

使用以下命令将[private-client.key]/[certificate-client.crt]合并成一个PFX文件:

openssl pkcs12 -export -out certificate-client.pfx -inkey private-client.key -in certificate-client.crt -certfile certificate-client.crt

在这个命令中:

  • -out certificate-client.pfx 指定输出的PFX文件名。
  • -inkey private-client.key 指定私钥文件。
  • -in certificate-client.crt 指定证书文件。
  • -certfile certificate-client.crt 指定CA证书文件(如果你有中间证书或链证书,也需要包含在内),自签证书这里放了和-in一样的证书。
    执行命令后,OpenSSL会提示你输入一个密码来保护PFX文件。这个密码将在导入PFX文件时需要。

三 NGINX配置ssl证书

包括配置服务端证书、开启客户端证书验证、配置客户端证书的验证证书。
     server {listen       9443 ssl http2;listen       [::]:9443 ssl http2;server_name  xxx.xxx.cn;ssl_certificate "certificate-server.crt";ssl_certificate_key "private-server.key";ssl_client_certificate "certificate-client.crt";  # CA根证书路径,用于验证客户端证书ssl_verify_client on;  # 开启客户端证书验证ssl_session_cache shared:SSL:1m;ssl_session_timeout  10m;ssl_ciphers PROFILE=SYSTEM;ssl_prefer_server_ciphers on;include /etc/nginx/default.d/*.conf;location / {proxy_pass http://127.0.0.1:8081/;}}

四 在windows中导入pfx文件

直接双击pfx文件,按提示导入即可。导入过程需要输入密码。截取部分图片;
在这里插入图片描述
在这里插入图片描述

导入成功后可以在证书管理查看导入的证书
在这里插入图片描述

在这里插入图片描述
打开浏览器第一次访问服务时会让我们选择证书:
在这里插入图片描述

五 解决浏览器提示自签服务端证书不受信任问题

在这里插入图片描述
一般是将服务端证书导入到受信任的根证书中即可解决。
在这里插入图片描述

http://www.lryc.cn/news/496355.html

相关文章:

  • Flink双流Join
  • 【数据结构实战篇】用C语言实现你的私有队列
  • 基于web的海贼王动漫介绍 html+css静态网页设计6页+设计文档
  • 2022 年 9 月青少年软编等考 C 语言三级真题解析
  • 机器学习算法(六)---逻辑回归
  • 计算机科学中的主要协议
  • 下载maven 3.6.3并校验文件做md5或SHA512校验
  • 【Android】View工作原理
  • TIE算法具体求解-为什么是泊松方程和傅里叶变换
  • postman中获取随机数、唯一ID、时间日期(包括当前日期增减)截取指定位数的字符等
  • 【计算机网络】实验3:集线器和交换器的区别及交换器的自学习算法
  • flink学习(14)—— 双流join
  • HTTP协议详解:从HTTP/1.0到HTTP/3的演变与优化
  • 张量并行和流水线并行在Transformer中的具体部位
  • WEB开发: 丢掉包袱,拥抱ASP.NET CORE!
  • 【论文阅读】Federated learning backdoor attack detection with persistence diagram
  • Gooxi Eagle Stream 2U双路通用服务器:性能强劲 灵活扩展 稳定易用
  • 【计算机网络】实验2:总线型以太网的特性
  • 如何在Spark中使用gbdt模型分布式预测
  • Qt-5.14.2 example
  • virtualbox给Ubuntu22创建共享文件夹
  • GPT打字机效果—— fetchEventSouce进行sse流式请求
  • SpringBoot 在线家具商城:设计考量与实现细节聚焦
  • 每日速记10道java面试题07
  • 前端面试热门题(二)[html\css\js\node\vue)
  • mvc基础及搭建一个静态网站
  • AOSP的同步问题
  • HarmonyOS4+NEXT星河版入门与项目实战(23)------实现手机游戏摇杆功能
  • Logistic Regression(逻辑回归)、Maximum Likelihood Estimatio(最大似然估计)
  • Vue文字转语音实现