nginx 配置 ssl 后无法访问 nginx: [emerg] cannot load certificate “*”: BIO_new_file() failed

nginx: [emerg] cannot load certificate “/etc/nginx/ssl/a.pem”: BIO_new_file() failed (SSL: error:0200100D:system library:fopen:Permission denied:fopen(‘/etc/nginx/ssl/a.pem’,‘r’) error:2006D002:BIO routines:BIO_new_file:system lib)

场景

nginx 配置 ssl 后无法访问

1. 确认443端口已开放
2. ssl 证书有效
3. nginx -t 检测正常

nginx -s reload 无异常,其他域名也可以正常访问
使用 systemctl status nginx 查看状态,发现异常

Sep 01 10:42:55 instance-1 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Sep 01 10:42:55 instance-1 nginx[5131]: nginx: [emerg] cannot load certificate "/etc/nginx/ssl/a.pem": BIO_new_file() failed (SSL: error:0200100D:system library:fopen:Permission deni...file:system lib)
Sep 01 10:42:55 instance-1 nginx[5131]: nginx: configuration file /etc/nginx/nginx.conf test failed
Sep 01 10:42:55 instance-1 systemd[1]: nginx.service: control process exited, code=exited status=1
Sep 01 10:42:55 instance-1 systemd[1]: Failed to start The nginx HTTP and reverse proxy server.
Sep 01 10:42:55 instance-1 systemd[1]: Unit nginx.service entered failed state.
Sep 01 10:42:55 instance-1 systemd[1]: nginx.service failed.

解决

可能是 SELinux 打开造成无权限读取证书

# 查看是否打开
sestatus -v
SELinux status:                 enabled

如果状态为disabled是关闭,没必要往下看了

# 查看
ls -lrtZ /etc/nginx/ssl/a.pem

# 恢复正确的 SELinux type
restorecon -v -R /etc/nginx/ssl/a.pem

重启nginx,应该就可以了

可能出现的其他问题

nginx -s reload 无效,可能是以下原因,建议直接使用systemctl restart nginx重启

1. nginx版本不支持 reload 命令。
2. nginx配置过程中产生了错误。
3. nginx配置文件或其他相关文件的权限不正确。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值