Com o TLS 1.0 sendo desativado em nome da conformidade com o PCI, não consigo obter um aplicativo ASP clássico de 32 bits funcionando.
Por recomendações do MS / Stack Exchange, eu instalei:
- CU1 do SQL Server 2014 SP1
- .NET Framework 4.6
Isso colocou nossos aplicativos ASP.NET / SSMS em execução. Mas nosso aplicativo ASP clássico, que usa um ADODB.Connection
objeto, não está funcionando.
Eu tentei uma cadeia de conexão que usa Provider=SQLNCLI11;
, mas isso também não parece ajudar. O provedor de memória compartilhada ainda está reclamando de nada estar do outro lado do canal. Mensagem de erro:
Erro do Microsoft SQL Server Native Client 11.0 '80004005'
Provedor de memória compartilhada: nenhum processo está na outra extremidade do canal.
Eu também tentei usar pipes nomeados com a cadeia de conexão Provider=SQLNCLI11;Server=np:\\.\pipe\MSSQL$SQLEXPRESS\sql\query;Database=northwind;Trusted_Connection=Yes;
e recebi esta mensagem de erro:
Erro do Microsoft SQL Server Native Client 11.0 '80004005'
Fornecedor de pipes nomeados: nenhum processo está na outra extremidade do pipe.
Existe um patch para o ADODB que eu deva estar ciente? Devo considerar o uso de pipes nomeados de alguma outra maneira ou algo semelhante? (embora eu esteja um pouco confuso sobre o motivo pelo qual a memória compartilhada não funciona, independentemente das configurações do TLS)
Atualizações dos comentários:
O servidor web e o SQL Server estão na mesma caixa.
É uma instância nomeada SQLExpress. A cadeia de conexão que trabalha com o TLS 1.0 ativado é:
"Driver={SQL Server}; Server=.\SQLExpress; Database=northwind; Trusted_Connection=Yes; Integrated_Security=True;"
Eu também tentei:
"Provider=SQLNCLI11; Server=.\SQLExpress; Database=northwind; Trusted_Connection=Yes;"
Nem funciona quando o TLS 1.0 estiver desativado. Eu sei que Trusted_Connection / Integrated_Security é redundante, mas mexer com isso também não parece ajudar.
Alternei a habilitação, desabilitação e a ordem para TCP e pipes nomeados. O nome do canal usado na cadeia de conexão acima é diretamente da Configuração do servidor para essa instância. Também tentei desabilitar a Memória compartilhada para garantir que os pipes nomeados estejam funcionando. Eu não tentei o TCP (como se a memória compartilhada não funcionasse por causa do TLS, por que o TCP?) A memória compartilhada e os pipes nomeados funcionam com o TLS 1.0 ativado. Assim que eu inverter a chave do Registro para desativar o TLS 1.0 (e reiniciar), as mensagens de erro acima ocorrem. Provavelmente vamos colocar essa máquina atrás de um proxy.
O serviço do servidor SQL não será iniciado depois de desativar o TLS 1.0 e o SSL 3.0
O problema descrito nesse link é tratado por CU1 na minha pergunta acima. A instância do SQL Server começa com o TLS 1.0 desabilitado (graças à atualização do MS). Aplicativos baseados em .NET funcionam bem com a instância SQL (após a atualização para 4.6). Esta pergunta é específica para um aplicativo ASP clássico (32 bits). Meu entendimento é que o cliente nativo também é corrigido pelo CU1, daí a minha confusão sobre por que isso não está funcionando.