Eu tive o mesmo problema.
Isso ocorre porque TACBrEAD.FreeOpenSSL é executado depois que é destruído algum form. E quando necessário o uso da 'libeay32.dll' não é inicializado a procedure TACBrEAD.InitOpenSSL novamente.
Para resolver o problema é só alterar a variável fsInicializado e a procedure conforme abaixo
TACBrEAD = class(TComponent) private fsOnGetChavePrivada: TACBrEADGetChave; fsOnGetChavePublica : TACBrEADGetChave ; fsOnProgress: TACBrEADOnProgress;
fsKey : pEVP_PKEY ; fsIsXMLeECFc : Boolean ; fsBufferSize: Integer; class var fsInicializado : Boolean;
procedure TACBrEAD.FreeOpenSSL; begin LiberarChave; {$IFDEF USE_libeay32} EVP_cleanup(); {$ELSE} EVPcleanup(); {$ENDIF} fsInicializado := False; end;