SQL Server Reporting Services – Erro ao Salvar Relatório: System.InvalidOperationException This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms.

Visualizações: 252
Tempo de Leitura: 3 minutos

Olá pessoal,
Boa noite!

Neste post vou comentar sobre algumas dificuldades que enfrentei em um projeto do setor BI na empresa em que trabalho, onde resolvemos implementar o recém lançado Microsoft Reporting Services 2016 (que incorporou o Datazen, adquirido pela Microsoft) para a disponibilização de relatórios, painéis, KPIs e dashboards de Vendas e Cobrança via internet, sem a necessidade de se conectar em uma VPN, mas utilizando autenticação do Active Directory.

Um dos grandes ganhos que esse projeto irá trazer para a empresa é a possibilidade de visualização dessas informações em dispositivos Web (Chrome, Firefox, Internet Explorer e qualquer outro browser), Tablets e dispositivos móveis (iOS e Android)

Para a implementação da estrutura necessária, o DBA Tiago Neves realizou a instalação e configuração do SQL Server 2016 + Reporting Services e disponibilizou o ambiente para a equipe de BI. Entretanto, ao tentar publicar qualquer relatório utilizando o SQL Server Mobile Report Publisher, era gerada a mensagem de erro abaixo:

Não foi possível salvar o relatório. Algo deu errado. Tente novamente mais tarde

Não foi possível salvar o relatório. Algo deu errado. Tente novamente mais tarde

Como vocês podem perceber, essa mensagem de erro é bem genérica e não ajuda muito na identificação e resolução do problema. Sendo assim, eu, Tiago e a DBA Caroline, começamos a analisar os arquivos de log do Reporting Services, que geralmente ficam localizados em “C:\Program Files\Microsoft SQL Server\MSRS13.Sua_Instancia\Reporting Services\LogFiles”, encontramos a seguinte mensagem de erro:

System.Reflection.TargetInvocationException Exception has been thrown by the target of an invocation. — System.InvalidOperationException This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms.

Com essa mensagem pudemos entender o que estava realmente ocorrendo: O servidor estava com as configurações de criptografia de dados FIPS habilitada, e o Reporting Services por padrão, não suporta essa configuração, conforme podemos ler em um blog da Microsoft: “This is happening because FIPS is enabled on the Reporting Services server and Report Manager does not support the Local Security Policy ‘System cryptography: Use FIPS compliant algorithms for encryption, hashing, and signing'” (fonte aqui).

Conversamos com o analista de segurança da empresa e o mesmo nos orientou a não desabilitar essa configuração no servidor devido a uma política de segurança da empresa.

Desativando o FIPS

Apenas para fins de testes, e no ambiente de Desenvolvimento, desativamos o FIPS e o Reporting Services se comportou normalmente, nos permitindo salvar e publicar os relatórios sem qualquer problema.

Para desativar essa configuração, basta acessar o registro do Windows, encontrar a configuração “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\fipsalgorithmpolicy” e alterar o valor da chave “Enabled” para 0.

SQL Server Reporting Services 2016 - Disable FIPS

Após isso, reinicie o serviço do Reporting Services e o SQL Server Mobile Report Publisher irá funcionar normalmente.

Resolvendo o problema sem desativar o FIPS

Como não poderíamos alterar essa configuração nos servidores, precisamos buscar outra solução para resolver esse problema. Depois de muitas pesquisas, o Tiago encontrou uma solução no Fórum Technet, onde é necessário alterar o arquivo machine.config do Microsoft .NET Framework do servidor (Geralmente localizado em C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config) e adicionar a seguinte configuração ao final do arquivo:

Essa configuração basicamente força o .NET Framework, utilizado pela ferramenta SQL Server Mobile Report Publisher, a utilizar o algoritmo de criptografia SHA256 ao invés do FIPS, que é incompatível com o Reporting Services desde a versão 2005.

Recomendo criar um backup desse arquivo antes de editá-lo. Após editar o arquivo, basta reiniciar o serviço do Reporting Services para que o SQL Server Mobile Report Publisher funcione normalmente, e sem precisar desabilitar o FIPS da instância.

Uma outra solução para este problema, é seguindo os passos do post SQL Server – Como criptografar e descriptografar senhas (com Salt) utilizando o CLR (C#), onde me deparei com essa mensagem de erro ao utilizar algoritmos não compatíveis com os padrões do FIPS no SQL Server, utilizando o CLR (C#).

Espero que tenham gostado desse post que fiz em conjunto com o Tiago Neves e até o próximo post!
Abraço!

System.InvalidOperationException: Esta implementação não faz parte dos algoritmos criptográficos validados por FIPS da Plataforma Windows.

System.InvalidOperationException: Esta implementação não faz parte dos algoritmos criptográficos validados por FIPS da Plataforma Windows.