无法获取本地发行者证书

无法获取本地发行者证书

我有一个对 *.example.com 有效的 SSL 证书。我已能够在 IIS 上为 subdomain.example.com 正确设置此 SSL 证书。

但我在 ubuntu 16.04 服务器和 nginx 上遇到了问题。

我使用 pfx 文件中的开放 SSL 创建了密钥和证书文件。然后向 nginx 添加了示例站点。这是我的 nginx 配置。

server {

 listen 443 ssl;
 server_name subdomain2.example.com subdomain2.example.com;
 ssl_certificate /etc/nginx/cert.crt;
 ssl_certificate_key /etc/nginx/cert.rsa;

 root /subdomain2/test;
 index index.html;
 include /etc/nginx/mime.types;
}

它在浏览器上运行良好。但当我尝试使用 curl 或使用 python 请求库发出请求时,我收到以下错误

无法获取本地发行者证书

如果我在 python 请求库上禁用 ssl 验证,我会得到正确的响应,但我不想禁用此验证。

我究竟做错了什么?

答案1

您还应该在服务器证书文件中连接中间证书。检查这里有关此问题的问答

正如@Martin指出的那样,文件中证书的顺序很重要。TLS 1.1 的 RFC 4346 规定:

这是 X.509v3 证书的序列(链)。发送者的证书必须位于列表的首位。每个后续证书都必须直接认证其前一个证书。

因此顺序为:

1. Your domain's certificate
2. Vendor's intermediate certificate that certifies (1)
3. Vendor's intermediate certificate that certifies (2)
...
n. Vendor's root certificate that certifies (n-1). Optional, because it should be contained in client's CA store.

另请检查此 RFC精确定义

相关内容