Você ja deve ter se deparado o com o seguinte erro:
Impossivel ler o certificado, ocorreu o seguinte erro: (error:0308010C:digital envelope routines::unsupported)!
O erro 0308010C:digital envelope routines::unsupported geralmente acontece porque as versões mais recentes do Node.js (v17 ou superior) usam um padrão de segurança (OpenSSL 3.0) que não “conversa” bem com métodos de criptografia mais antigos usados por alguns certificados digitais ou sistemas da Receita.
O OpenSSL 3.0 tornou “obsoletos” alguns algoritmos de criptografia mais antigos que ainda são usados em muitos certificados digitais e nos servidores da Receita Federal. Quando o PHP tenta ler o certificado usando as funções nativas, o OpenSSL bloqueia a operação por segurança.
Aqui estão as formas de resolver isso no ambiente PHP:
Passo a passo no Windows (Sem usar comandos):
- Instale o certificado atual: Dê dois cliques no seu arquivo
.pfxoriginal e siga o assistente para instalá-lo no Windows.
Escolha a opção Máquina Local ou Usuário Local.
Avançe
Coloque a senha do certificado
Marque a opção: Marcar como exportável
Avançe até o final - Exporte uma cópia nova:
No menu iniciar, digite “certificados de usuário”, selecione “Gerenciar certificados de usuário” e abra.
Vá em Pessoal > Certificados.
Clique com o botão direito no seu certificado > Todas as Tarefas > Exportar…
Clique em “Avançar” e selecione “Sim, exportar a chave privada”.
AQUI ESTÁ O PULO DO GATO: Na tela de Segurança, onde você define a senha, haverá uma opção de “Criptografia” ou “Segurança”.
Se aparecer uma lista, escolha AES256-SHA256 (não escolha TripleDES-SHA1).
Finalize a exportação com um novo nome (ex:
certificado_atualizado.pfx).



