Windows系统下Nginx无法加载SSL证书报错如何解决?
问题原因
报错核心为Nginx无法读取指定的SSL证书文件,具体触发原因如下:
- 路径配置格式错误:你当前使用类Unix的无盘符根路径写法,Windows系统下Nginx会自动将这类路径补全为Nginx安装盘的根路径,或默认补全到C盘根目录,和你证书实际存放路径不一致就会触发找不到文件的错误。
- 配置笔误:
ssl_certificate_key配置的路径为/Users/tusername/localhost.key,和证书路径的用户名相比多了一个t字符,后续哪怕路径格式修正,密钥文件也会读取失败。 - 文件实际不存在:可手动检查
C:\Users\username\路径下是否真的存在localhost.crt和localhost.key两个文件,排查是否有文件名拼写错误、后缀名被隐藏的情况(比如实际文件为localhost.crt.txt)。 - 权限不足:Nginx运行身份没有读取两个证书文件的权限,比如你把证书放在个人用户目录下,用系统服务身份启动Nginx时就会无权限读取。
解决步骤
- 修正配置路径
你可以选择两种写法,优先推荐相对路径避免盘符变动导致配置失效:- 相对路径写法:把
localhost.crt和localhost.key放到Nginx安装目录下的conf/cert文件夹(需手动新建cert目录),对应配置修改为:
server { listen 443 ssl; server_name platform.local.com; ssl_certificate conf/cert/localhost.crt; # 修正原有路径的用户名笔误 ssl_certificate_key conf/cert/localhost.key; location / { proxy_pass https://localhost:3001; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; index index.html index.htm; } }- 绝对路径写法:直接写全文件所在的完整路径,用正斜杠分隔即可:
ssl_certificate C:/Users/username/localhost.crt; ssl_certificate_key C:/Users/username/localhost.key; - 相对路径写法:把
- 校验文件权限:右键点击两个证书文件,选择「属性」-「安全」,给运行Nginx的用户(管理员启动就给Administrators组,系统服务启动就给SYSTEM用户)添加「读取」权限。
- 重启Nginx生效:打开Nginx安装目录的命令行窗口,执行
nginx -t验证配置是否正确,提示test is successful后,再执行nginx -s reload重启Nginx即可。
内容的提问来源于stack exchange,提问作者Festina
相关产品推荐
相关产品推荐

