Как построить правильную цепочку ЦС с использованием сертификатов Cloudflare oigin? - PullRequest
0 голосов
/ 28 мая 2020

Вариант использования

Это мой вариант использования: у меня есть страница, доступная через cloudflare (проксированная), назовем ее example.com. Я создал сертификат происхождения с помощью Cloudflare и связал его в своей конфигурации nginx, работает нормально. Cloudflare работает в режиме «Полный» SSL. Теперь я хочу иметь возможность добавить 127.0.0.1 example.com к моему /etc/hosts, чтобы сам сервер мог напрямую обращаться к странице (на самом деле это не вариант использовать другой домен с программным обеспечением, работающим на этом сервере, чтобы обойти это).

Теперь, очевидно, когда я curl -v https://example.com получаю ssl-ошибку.

То, что я делал до сих пор

Итак, в основном, провел небольшое исследование и узнал о цепочках CA и так далее. Я нашел Cloudflare Origin root 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 root CA (файл e cc)
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 предоставил мне сертификат, который не из root CA, который они мне дали.

Также разница между Issuer и тема очень маленькая:

  • CloudFlare Origin SSL Certificate Authority
  • CloudFlare Origin SSL ECC Certificate Authority

Что я могу сделать, чтобы это исправить? Я, наверное, просто что-то здесь не вижу, может ли кто-нибудь мне помочь? Спасибо!

1 Ответ

1 голос
/ 28 мая 2020

На сайте, на который вы ссылаетесь, предлагаются два сертификата CA:

enter image description here

Первый - это сертификат RSA с OU "CloudFlare Origin Центр сертификации SSL ». Второй - это OU сертификата E CC "Центр сертификации CloudFlare Origin SSL E CC".

Похоже, вы взяли сертификат E CC, в то время как должны были взять сертификат RSA.

...