用例
这是我的用例:通过cloudflare (代理),我有一个可用的页面,我们称之为example.com。我用Cloudflare创建了一个原产地证书,并将其链接到我的nginx配置中,运行良好。Cloudflare在“完全”SSL模式下工作。现在,我希望基本上能够将127.0.0.1 example.com
添加到我的/etc/hosts
中,这样服务器本身就可以直接访问页面了(使用不同的域来绕过这个服务器上运行的软件并不是一个真正的选择)。
现在,很明显,当我curl -v https://example.com
时,我会得到一个ssl错误。
我至今所做的一切
所以基本上,做了一些关于CA链的研究和学习等等。我找到了Cloudflare原产地根CA (Cloudflare文档,步骤4),并将它包含在我的nginx服务器的证书链中(基本上是他们为我生成的Cloudflare原产地证书,然后是根CA)。我还将根CA安装到/usr/share/ca-certificates
(和/usr/local/share/ca-certificates
)并运行dpkg-reconfigure ca-certificates
,并将其正确地添加到/etc/ssl/certs
dir中。到目前一切尚好?
结果:不管用。
进一步研究
我无意中发现了这个指南,我查看了下面的内容:
cert.pem
是我颁发的Cloudflare证书ca.pem
是cloudflare根CA ( ecc文件)root@host:~/ssltest# openssl verify cert.pem
O = "CloudFlare, Inc.", OU = CloudFlare Origin CA, CN = CloudFlare Origin Certificate
error 20 at 0 depth lookup: unable to get local issuer certificate
error cert.pem: verification failed
root@host:~/ssltest# openssl x509 -noout -issuer -in cert.pem
issuer=C = US, O = "CloudFlare, Inc.", OU = CloudFlare Origin SSL Certificate Authority, L = San Francisco, ST = California
root@host:~/ssltest# openssl x509 -noout -issuer -in ca.pem
issuer=C = US, ST = California, L = San Francisco, O = "CloudFlare, Inc.", OU = CloudFlare Origin SSL ECC Certificate Authority
root@host:~/ssltest# openssl verify -CAfile ca.pem cert.pem
O = "CloudFlare, Inc.", OU = CloudFlare Origin CA, CN = CloudFlare Origin Certificate
error 20 at 0 depth lookup: unable to get local issuer certificate
error cert.pem: verification failed
因此,cert.pem
的发布者和ca.pem
的主体基本上是不匹配的。这对我来说意味着:要么有一个我不知道如何获得的中级证书,要么Cloudflare给了我一个不是他们给我的根CA的证书。
此外,发行者和被调查人之间的差别也非常小:
CloudFlare Origin SSL Certificate Authority
CloudFlare Origin SSL ECC Certificate Authority
我能做些什么来解决这个问题?我可能只是没看到什么,有人能帮我吗?谢谢!
发布于 2020-05-28 17:19:55
在您所指的站点上提供了两个CA证书:
第一个是具有OU "CloudFlare原产地SSL证书颁发机构“的RSA证书。秒一是ECC证书OU "CloudFlare原产地SSL证书颁发机构“。
看起来您获得了ECC证书,而您应该获得RSA证书。
https://stackoverflow.com/questions/62068801
复制相似问题