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

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.

SQL, sql server, sql server 2008, sql server 2008 R2, Oracle, Oracle Database, Oracle 11g, Oracle 10g, Oracle 12c, MySQL, Firebird, Consultoria, Consultor, Programador, Programação. Desenvolvedor, Analista de Sistemas, DBA, Criação de website, Criação de Sistema Web, Vitória, Vila Velha, Guarapari, Espírito Santo, ES, Consultoria SQL em VItória, Treinamento, Curso, Prestação de serviço, prestar serviço, freelancer, freela, banco de dados, consultoria em banco de dados, consultor de banco de dados

Deixe uma resposta