Con TLS 1.0 disabilitato nel nome della conformità PCI, non riesco a far funzionare un'applicazione ASP classica a 32 bit.
Per i consigli di scambio MS / Stack, ho installato:
- SQL Server 2014 SP1 CU1
- .NET Framework 4.6
Questo ha permesso alle nostre applicazioni ASP.NET / SSMS di funzionare. Ma la nostra applicazione ASP classica, che utilizza un ADODB.Connection
oggetto non funziona.
Ho provato una stringa di connessione che utilizza Provider=SQLNCLI11;
, ma che non sembra aiutare neanche. Il provider di memoria condivisa si sta ancora lamentando del fatto che nulla si trovi sull'altra estremità della pipe. Messaggio di errore:
Errore "80004005" di Native Client 11.0 di Microsoft SQL Server
Provider di memoria condivisa: nessun processo è sull'altra estremità della pipe.
Ho anche provato a utilizzare Named Pipes con la stringa di connessione Provider=SQLNCLI11;Server=np:\\.\pipe\MSSQL$SQLEXPRESS\sql\query;Database=northwind;Trusted_Connection=Yes;
e ho ricevuto questo messaggio di errore:
Errore "80004005" di Native Client 11.0 di Microsoft SQL Server
Provider di tubi con nome: nessun processo si trova sull'altra estremità del tubo.
Esiste una patch per ADODB di cui dovrei essere a conoscenza? Dovrei considerare l'uso di Named Pipes in qualche altro modo o simili? (anche se sono un po 'confuso sul perché la memoria condivisa non funziona, indipendentemente dalle impostazioni TLS)
Aggiornamenti dai commenti:
Il server Web e SQL Server si trovano nella stessa casella.
È un'istanza denominata SQLExpress. La stringa di connessione che funziona con TLS 1.0 abilitato è:
"Driver={SQL Server}; Server=.\SQLExpress; Database=northwind; Trusted_Connection=Yes; Integrated_Security=True;"
Ho anche provato:
"Provider=SQLNCLI11; Server=.\SQLExpress; Database=northwind; Trusted_Connection=Yes;"
Né funziona una volta che TLS 1.0 è disabilitato. So che Trusted_Connection / Integrated_Security è ridondante, ma non è nemmeno utile fare confusione con questi.
Ho abilitato, disabilitato e ordinato sia il TCP che i named pipe. Il nome della pipe utilizzata nella stringa di connessione sopra è direttamente dalla configurazione del server per quell'istanza. Ho anche provato a disabilitare la memoria condivisa per assicurarmi che le named pipe funzionino. Non ho provato TCP (come se la memoria condivisa non funzionasse a causa di TLS, perché TCP?) Memoria condivisa e Named Pipes funzionano entrambi con TLS 1.0 abilitato. Non appena capovolgo la chiave di registro per disabilitare TLS 1.0 (e riavviare), si verificano i messaggi di errore sopra riportati. Probabilmente metteremo questa macchina dietro un proxy.
Il servizio SQL Server non si avvia dopo aver disabilitato TLS 1.0 e SSL 3.0
Il problema descritto in quel link è affrontato da CU1 nella mia domanda posta sopra. L'istanza di SQL Server inizia con TLS 1.0 disabilitato (grazie all'aggiornamento MS). Le applicazioni basate su .NET funzionano perfettamente con l'istanza SQL (dopo l'aggiornamento alla 4.6). Questa domanda è specifica per un'applicazione ASP classica (32 bit). La mia comprensione è che il client nativo è anche patchato da CU1, quindi la mia confusione sul perché questo non funziona.