DFe.NET icon indicating copy to clipboard operation
DFe.NET copied to clipboard

DFe.NET com IIS Access Denied ObterDoArrayBytes.

Open marcosmarchiore opened this issue 3 years ago • 6 comments

Olá, pessoal tive problemas com o uso da DFe.Net para uso com IIS na função ObterDoArrayBytes e as outras para pegar o certificado. O problema e que utilizando o X509KeyStorageFlags.MachineKeySet dá erro de Access Denied pois o usuário do Pool de aplicativos não tem permissão, desta forma modifiquei a função para.

    private static X509Certificate2 ObterDoArrayBytes(byte[] arrayBytes, string senha)
    {
        try
        {
            var certificado = new X509Certificate2(arrayBytes, senha, X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet);
            return certificado;
        }
        catch (Exception ex)
        {
            try
            {
                var certificado = new X509Certificate2(arrayBytes, senha, X509KeyStorageFlags.MachineKeySet);
                return certificado;
            }
            catch (Exception ex1)
            {
                string erro = ex.Message + " " + ex1.Message;
                throw new Exception("Não foi possivel converter o stream para o certificado.", ex);
            }
        }
    }
    
    

Com isso consegui resolver o meu problema, no inicio quando testava em DEBUG tudo ia muito bem pois o usuário que usa e do desktop ai ele tem direitos mas quando publicava a aplicação e rodada no IIS dava o erro.

Espero que ajude.

vlw

marcosmarchiore avatar Oct 08 '21 14:10 marcosmarchiore

O nosso amigo @danilobreda entende mais de web que eu hehehe , ainda sou novato no web.

robertorp avatar Oct 12 '21 19:10 robertorp

O objetivo da divulgação do código e que se alguém usar IIS com esta alteração vai ter acesso normalmente ao certificado Ok.

Alterando a ObterDoArrayBytes conforme esta acima.

marcosmarchiore avatar Oct 12 '21 23:10 marcosmarchiore

Ahh sim hehehe mauz , desculpe Estou fazendo com bytes array também no meu Web , mas se tratando de Web sou Novato ainda , então não arrisco dar pitaco ainda hehehe obrigado @marcosmarchiore

robertorp avatar Oct 13 '21 10:10 robertorp

@marcosmarchiore se o X509KeyStorageFlags fosse uma configuração, resolveria o problema?

danilobreda avatar Oct 18 '21 17:10 danilobreda

@danilobreda eu acho que sim, eu fiz desta forma pois tenho clientes desktop e clientes com iis, ai se der erro em uma ele lê a outra, mas a boa pratica e a sua sugestão ai, parametrizar.

marcosmarchiore avatar Oct 18 '21 22:10 marcosmarchiore

Eu tive o mesmo problema, porem para resolver (não sei se é a melhor pratica) foi add o usuario do IIS nas permissoes da pasta que ficam os certificados, o IIS_USR ("C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys") e funcionou perfeitamente.

lehfrz avatar Jul 12 '22 13:07 lehfrz