这是我的用例。我有一个页面可以通过cloudflare(代理),让我们称它为example.com.我创建了一个Origin证书与Cloudflare和链接它在我的nginx配置,工作正常。Cloudflare在 "完全 "SSL模式下工作。现在,我想能够基本上添加 127.0.0.1 example.com
对我 /etc/hosts
所以服务器本身就可以直接访问该页面(使用不同的域名和该服务器上运行的软件来规避这个问题是不可能的)。
现在很明显,当我 curl -v https://example.com
我得到一个ssl错误。
所以基本上,做了一些研究,了解了CA链等.我发现Cloudflare Origin的根CA的(Cloudflare 文件步骤4),并将其包含在我的nginx服务器的证书链中(基本上是先用Cloudflare Origin为我生成的证书,然后用Root CA)。我还安装了Root CA到 /usr/share/ca-certificates
(和 /usr/local/share/ca-certificates
)和运行 dpkg-reconfigure ca-certificates
并将其适当加入到 /etc/ssl/certs
导演: 到目前为止还不错?
结果呢?没有工作。
偶然发现这个 指南 我看了以下内容。
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给我的证书不是来自他们给我的根CA。
而且Issuer和Subject之间的差别超级小。
CloudFlare Origin SSL Certificate Authority
CloudFlare Origin SSL ECC Certificate Authority
我可以做什么来解决这个问题呢?我可能只是没有看到这里的东西,有人可以帮助我吗?