Вариант использования
Это мой вариант использования: у меня есть страница, доступная через 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
Что я могу сделать, чтобы это исправить? Я, наверное, просто что-то здесь не вижу, может ли кто-нибудь мне помочь? Спасибо!