one-way ssl com curl

1

Eu sei que há muitos tópicos e artigos por aí, mas eu estou realmente dando voltas nesta.

Eu tenho uma instância do NodeJS em execução no TLS. Eu preciso de outro servidor para se conectar a ele usando cURL. Infelizmente eu não sou capaz de fazer um -k por causa das limitações da versão do cURL que estou usando.

Por isso, não preciso de avisos de certificados ao conectar.

Meu pensamento é estes:

1. to generate a cert 
2. generate a certificate signing request
3. acquire the CA
4. sign the certificate with the CA
5. Configure NodeJS to send the CA, Cert, and Key during handshakes
6. Have the requesting server do a cURL command, specifying the certificate in the command.

Isso faz algum sentido ou é para trás? Eu tenho tido um monte de problemas para diferenciar cada pedaço dele.

obrigado,

Editar

Então, aparentemente, não tenho ideia do que estou fazendo com base nas respostas. Se eu pudesse obter uma cópia das chaves CA, pública e privada. Como então eu prosseguiria? Por favor, seja verboso.

    
por jacksonecac 30.08.2017 / 20:38

1 resposta

2

Unfortunately I am not able to do a -k because of limitations of the version of cURL that I am using.

Essa é a abordagem errada desde o início. -k desabilita qualquer validação do certificado do servidor e, assim, torna o homem no meio dos ataques fácil, isto é, permite exatamente o que o https pretende evitar.

  1. Configure NodeJS to send the CA, Cert, and Key during handshakes
  2. Have the requesting server do a cURL command, specifying the certificate in the command.

Não tenho certeza do que você está tentando alcançar aqui, mas se eu entendi corretamente, você deseja gerar um certificado no lado do servidor e, em seguida, enviar esse certificado para o cliente para que ele verifique esse certificado no futuro.

O problema com essa abordagem é que você precisa proteger o envio do certificado recém-criado do servidor para o cliente. Caso contrário, um homem no meio poderia apenas trocar o certificado contra um criado pelo atacante e assim continuar fazendo o homem indetectável nos ataques do meio.

Infelizmente, sua pergunta descreve uma tentativa de solucionar um problema desconhecido (consulte problema XY ). A maneira comum de fazer SSL é ter uma autoridade de certificação (CA) confiável já pelo cliente e um certificado emitido por essa CA. Na maioria dos casos, uma CA pública, como o Let's Encrypt, é usada para isso, pois essas autoridades de certificação já são confiáveis para o cliente (são fornecidas com sistema operacional ou navegador). Não há nenhuma explicação em sua pergunta por que você não pode seguir esse caminho estabelecido e, em vez disso, precisa inventar sua própria solução.

    
por 30.08.2017 / 20:53