Что я хотел бы сделать

У меня есть домен example.com , для которого мне требуется SSL-сертификат клиента для доступа. Это легко сделать с помощью ssl_verify_client on; директивы.

Однако некоторые ресурсы должны быть доступны публично, например .well-known/acme-challenge/ required от Let's Encrypt или keybase.txt из Keybase.io.

Я сделал небольшую графику ASCII, чтобы визуализировать то, что я хотел бы сделать.

                    +-------------+
                    |             |
                    | example.com |
                    |             |
                    ++----------+-+
                     |          |
  Public Ressource   |          | Private Ressource
       (Whitelist)   |          | (Anything else)
                     |          |
                     v          v
+--------------------++        ++-------------------------+
|                     |        |                          |
| Normal HTTPS Server |        | Requires SSL Client cert |
|                     |        |                          |
+---------------------+        +--------------------------+

Что я пробовал до сих пор

Пока что мой обходной путь - использовать DNS TXT-записи для проверки запросов Let's Encrypt. Это неоптимально, поскольку их обновление может занять довольно много времени, и это не решает проблему в целом.

Моя идея была бы как определение двух бэкэнд-серверов, которые доступны только через сокетное соединение и затем связываются с ними через директивы location . Я не знаю, возможно это или нет, но документация nginx меня не просветила.

Чего я хочу избежать

По умолчанию предлагается "Просто использовать другой поддомен", что несколько противоречит цели, так как я хочу использовать эти ресурсы для аутентификации этого домена, а не другого домена.

0