Desativar qualquer coisa no registro afeta apenas o que usa os componentes do Windows para RC4 (IIS / IE). O IIS Crypto também não está relacionado - já que você não está usando o IIS.
Mas você está usando o node.js criado em https.createServer
. Todas as configurações relacionadas ao RC4 ocorrerão dentro do node.js (já que node.js não se importa com o registro).
Novos cifras melhores foram adicionadas ao node.js, que virão automaticamente com a próxima versão do node.js
Se você estiver usando node.js 0.12, atualize sua lista de códigos do fonte atual.
Parece que você especificou as cifras corretamente. Mas tem certeza de que esse é o código que você está executando? Se você estiver usando node.js 0.12 ou posterior, o RC4 estará desabilitado por padrão! Verifique se tudo está devidamente atualizado e as bibliotecas estão em ordem.
Quando você cria a instância do servidor incorporada, ela se parece com algo assim:
var server = https.createServer({
key: privateKey,
cert: certificate,
ca: certificateAuthority,
// default node 0.12 ciphers with RC4 disabled!!!
ciphers: [
"ECDHE-RSA-AES256-SHA384",
"DHE-RSA-AES256-SHA384",
"ECDHE-RSA-AES256-SHA256",
"DHE-RSA-AES256-SHA256",
"ECDHE-RSA-AES128-SHA256",
"DHE-RSA-AES128-SHA256",
"HIGH",
"!aNULL",
"!eNULL",
"!EXPORT",
"!DES",
"!RC4",
"!MD5",
"!PSK",
"!SRP",
"!CAMELLIA"
].join(':'),
honorCipherOrder: true
}, app);
Se você estiver usando um node.js recente, não deverá especificar cifras, mas apenas usar os padrões. No entanto, pode ser prático listá-los para fins de depuração.
Para depuração simples, simplesmente continue usando o SSL Labs. Se o SSL Labs ainda disser que o RC4 está ativado - tente desativar um dos outros conjuntos de criptografia para verificar se você está realmente alterando o código real que está sendo usado. Se você não vir nenhuma alteração, alterne para o Fiddler para garantir que estamos falando com o servidor correto.
O var agent = new https.Agent
assim chamado "config" não é relevante. Esse snippet está criando um https.Agent (cliente) e especifica com quais cifras você gostaria de se conectar. Você então se conectará com uma dessas cifras se elas forem oferecidas pelo servidor. A parte interessante é https.createServer
Entenda que quando você navega pelo servidor e define os cabeçalhos usando o Fiddler - então você está fazendo o mesmo que var agent = new https.Agent
. Você solicita qual pacote de criptografia você gostaria de usar. Tente solicitar o RC4 usando apenas o Fiddler e veja se ele é aceito. Então você deve olhar o que volta do servidor para verificar se você está realmente "falando" com a instância node.js que você pensa que é!
O snippet acima e as instruções passo a passo para A + podem ser encontradas em CertSimple
Etapas de solução de problemas:
-
Verifique a versão node.js
-
Verifique a versão do nó / lib / tls.js
-
Verifique se você está se conectando à instância node.js correta (iniciar / conectar / parar / conectar)
-
Defina o Fiddler para aceitar apenas RC4
Se o Fiddler se conectar com o RC4, você precisará modificar algum código.
Se o Fiddler não puder se conectar com o RC4 - e o SSL Labs ainda assim o faz - então você tem um proxy (ou alguma outra coisa!) Entre o seu node.js e o SSL Labs.
Atualização:
Se o Fiddler é muito difícil de configurar - então algumas ferramentas práticas para verificar cifras aceitas pelo servidor podem ser encontradas em Superusuário