I dag opgraderede jeg lig et mindre site til Umbraco 12, hvilket førte mig direkte til Umbraco Installations-skærmen. Som det ofte er tilfældet, når man opgraderer Umbraco og derefter støder på en installations-skærm, tyder det på, at der er et problem med databaseadgangen.
Hele fejllinien er som følger:
Failed to detected SqlServer version.","@l":"Error","@x":"Microsoft.Data.SqlClient.SqlException (0x80131904): A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - The certificate chain was issued by an authority that is not trusted.)\r\n ---> System.ComponentModel.Win32Exception (0x80090325): The certificate chain was issued by an authority that is not trusted.\r\n at Microsoft.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)\r\n at Microsoft.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)\r\n at Microsoft.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)\r\n at Microsoft.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)\r\n at Microsoft.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)\r\n at Microsoft.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry, SqlConnectionOverrides overrides)\r\n at Microsoft.Data.SqlClient.SqlConnection.Open(SqlConnectionOverrides overrides)\r\n at Microsoft.Data.SqlClient.Sql
Denne gang var det dog anderledes. Det viser sig, at Umbraco 12 / Microsoft, har foretaget nogle væsentlige ændringer i ADO. En af disse ændringer er, at "Encrypt connection string" egenskaben nu er som standard sat til true. Normalt ville det ikke være et problem for os, da vi kun udveksler data gennem krypterede forbindelser. Men hvad hvis SQL-serveren har sit eget brugerdefinerede certifikat? I så fald bryder Umbraco helt sammen.
For nu er løsningen at tillade Umbraco-sitet at stole på SQL-serverens certifikat. Dette kan opnås ved at tilføje "TrustServerCertificate=True" til forbindelsesstrengen.
Jeg vil give yderligere opdateringer, når jeg har mere tid til at undersøge dette problem. Den nævnte midlertidige løsning kan løse problemet, men fra et sikkerhedsmæssigt synspunkt er den måske ikke ideel.