Windows系统使用OpenSSL生成自签名证书

Nginx服务器添加SSL证书。

要在Windows系统的Nginx Web服务器上使用OpenSSL生成证书,并确保该证书能在局域网内被计算机信任,你可以按照以下详细步骤进行操作:

一、生成证书

  1. 下载并安装OpenSSL

    • 从OpenSSL的官方网站下载适用于Windows的版本。
    • 安装OpenSSL,并配置环境变量。将OpenSSL的安装路径(例如C:\Program Files\OpenSSL-Win64\bin)添加到系统的Path环境变量中。
  2. 生成服务器私钥

    • 打开命令提示符(CMD),切换到你想保存证书的目录。
    • 执行以下命令生成服务器私钥(server.pemserver.key):
    shell 复制代码
    openssl genrsa -out server.pem 2048
    openssl rsa -in server.pem -out server.key
  3. 生成证书签名请求(CSR)

    • 执行以下命令生成CSR文件(server.csr):
    shell 复制代码
    openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=YourState/L=YourCity/O=YourOrganization/OU=YourUnit/CN=YourServerName"
    • 注意将/C=CN/ST=YourState/L=YourCity/O=YourOrganization/OU=YourUnit/CN=YourServerName中的占位符替换为你的实际信息。其中CN(Common Name)必须是你希望证书绑定的域名或IP地址,在局域网中通常是服务器的IP地址或局域网内的域名。
  4. 生成自签名SSL证书

    • 执行以下命令生成自签名SSL证书(server.crt):
    shell 复制代码
    openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
  5. 生成PFX证书(可选,但Windows常用)

    • 如果你希望将证书和私钥打包成一个PFX文件,可以执行以下命令:
    shell 复制代码
    openssl pkcs12 -export -in server.crt -inkey server.key -out server.pfx -name server
    • 在此过程中,你需要输入一个密码来保护PFX文件。

二、配置Nginx使用证书

  1. 将证书文件复制到Nginx目录

    • 将生成的server.crtserver.key(或server.pfx,如果使用PFX文件)复制到Nginx安装目录下的conf文件夹或其他你指定的证书文件夹中。
  2. 修改Nginx配置文件

    • 打开Nginx配置文件(通常是nginx.conf),并添加或修改HTTPS服务器配置部分:
    nginx 复制代码
    server {
    	listen 443 ssl;
    	server_name YourServerName;  # 可以填IP地址或域名
    	ssl_certificate ssl/server.crt;  # 证书文件路径
    	ssl_certificate_key ssl/server.key;  # 私钥文件路径(如果使用PFX文件,则不需要此行,并在ssl_certificate行指定PFX文件)
    	# 如果使用PFX文件,则配置如下:
    	# ssl_certificate ssl/server.pfx;
    	# ssl_certificate_key 不用指定,因为PFX文件已包含私钥
    	# 其他SSL配置...
    	
    	location / {
    		root html;
    		index index.html index.htm;
    		# 其他配置...
    	}
    }
  3. 重启Nginx

    • 保存并关闭Nginx配置文件,然后重启Nginx以使配置生效。

三、局域网内信任证书

  1. 将根证书(CA证书)导入到局域网内的计算机

    • 在这个场景中,由于你使用的是自签名证书,因此你的计算机需要信任这个自签名的根证书。
    • 将生成的server.crt(或CA证书,如果你有一个单独的CA证书)复制到每台需要信任该证书的计算机上。
  2. 在Windows上导入证书

    • 打开"控制面板" > "管理工具" > "证书 - 当前用户"或"证书 - 计算机"。
    • 选择"受信任的根证书颁发机构"或适当的存储位置。
    • 右键点击"证书"文件夹,选择"所有任务" > "导入",然后按照向导导入你的证书文件(server.crt)。
  3. 验证信任

    • 在浏览器中访问使用HTTPS的Nginx服务器,如果证书被正确导入并信任,则浏览器将不会显示安全警告。

请注意,自签名证书虽然适用于内部或测试环境,但在生产环境中通常建议使用由受信任的证书颁发机构(CA)签发的证书,以确保更高的安全性和用户信任度。

补充:局域网内证书信任问题

因为缺少CA证书,故以上第三章节也不能解决证书信任问题。

要制作局域网内被信任的证书,请移步:局域网内搭建浏览器可信任的SSL证书

相关推荐
yuguo.im15 小时前
Nginx 架构与设计
运维·nginx·架构
vvw&17 小时前
使用 Nginx 在 Ubuntu 22.04 上安装 LibreNMS 开源网络监控系统
linux·运维·服务器·nginx·ubuntu·github·librenms
OkeyProxy1 天前
Nginx正向代理處理HTTPS請求詳解
nginx·https·ip地址·代理服务器·海外ip代理
2201_761199041 天前
nginx动静分离和rewrite重写和https和keepalived
运维·nginx·https
苹果醋31 天前
前端面试之九阴真经
java·运维·spring boot·mysql·nginx
YiSLWLL1 天前
Django+Nginx+uwsgi网站使用Channels+redis+daphne实现简单的多人在线聊天及消息存储功能
服务器·数据库·redis·python·nginx·django
vvw&2 天前
如何在 Ubuntu 22.04 上安装带有 Nginx 的 ELK Stack
linux·运维·nginx·ubuntu·elk·elasticsearch·开源项目
苹果醋32 天前
vue3 在哪些方便做了性能提升?
java·运维·spring boot·mysql·nginx
贰十六2 天前
笔记:Centos Nginx Jdk Mysql OpenOffce KkFile Minio安装部署
笔记·nginx·centos
学Linux的语莫2 天前
Ansible使用简介和基础使用
linux·运维·服务器·nginx·云计算·ansible