Eu tenho um domínio example.com
, para o qual eu preciso de um certificado de cliente SSL para acessar. Isso é feito facilmente com a diretiva ssl_verify_client on;
.
Alguns recursos, no entanto, devem poder ser acessados publicamente, como .well-known/acme-challenge/
exigido por Let's Encrypt ou keybase.txt
do Keybase.io.
Eu fiz um pequeno gráfico ASCII para visualizar o que eu gostaria de fazer.
+-------------+
| |
| example.com |
| |
++----------+-+
| |
Public Ressource | | Private Ressource
(Whitelist) | | (Anything else)
| |
v v
+--------------------++ ++-------------------------+
| | | |
| Normal HTTPS Server | | Requires SSL Client cert |
| | | |
+---------------------+ +--------------------------+
Até agora, minha solução alternativa é usar registros TXT do DNS para verificar as solicitações Vamos criptografar. Isso é insatisfatório, já que atualizá-los pode demorar um pouco e, na verdade, não resolve o problema.
Minha ideia seria como definir dois servidores de back-end, que só são acessíveis por meio de conexão de soquete e, em seguida, vinculá-los por meio de location
diretivas. Não sei se é possível ou não, mas a documentação do nginx não me esclareceu.
A sugestão padrão parece ser "Basta usar um subdomínio diferente", o que de certa forma acaba com o objetivo, pois quero usar esses recursos para autenticar este domínio e não um diferente domínio.