Membros Pro Vitor Domingos Postado 10 Abril Membros Pro Postado 10 Abril Bom dia Pessol, queria uma ajuda de voces.... Estou fazendo uma aplicação, e estou fazendo com que o usuario escolha seu certificaod, mas parei nessa parte, pois nao sei como posso continuar, eu preciso enviar isso por http, mas nao achei como ainda....
Moderadores Juliomar Marchetti Postado 10 Abril Moderadores Postado 10 Abril 11 minutos atrás, Vitor Domingos disse: Bom dia Pessol, queria uma ajuda de voces.... Estou fazendo uma aplicação, e estou fazendo com que o usuario escolha seu certificaod, mas parei nessa parte, pois nao sei como posso continuar, eu preciso enviar isso por http, mas nao achei como ainda.... Bom se está trabalhando com API seu cliente só pode usar certificado A1. tu vai ter que ter opção para ele upar para sua API o pfx e tu guardar ele em um binario depois tu carregar ele como arquivo e não mais como numero de serie conforme sua imagem Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Membros Pro Vitor Domingos Postado 10 Abril Membros Pro Postado 10 Abril (editado) 7 minutos atrás, Juliomar Marchetti disse: Bom se está trabalhando com API seu cliente só pode usar certificado A1. tu vai ter que ter opção para ele upar para sua API o pfx e tu guardar ele em um binario depois tu carregar ele como arquivo e não mais como numero de serie conforme sua imagem Certo, mas acho que me expressei errado, quando o cliente abrir a aplicação, abre aquela tela do windows para selecionar o certificado, Certo? E depois disso, o que eu faço com a informação, pois eu preciso enviar o certificado por http, mas eu nao queria que o cliente apontasse o diretorio do pfx, mas sim aquela tela de do windows para escolher o certificado, Agradeço ja pela ajuda!! Editado 10 Abril por Vitor Domingos
Moderadores Juliomar Marchetti Postado 10 Abril Moderadores Postado 10 Abril 2 minutos atrás, Vitor Domingos disse: Certo, mas acho que me expressei errado, quando o cliente abrir a aplicação, abre aquela tela do windows para selecionar o certificado, Certo? E depois disso, o que eu faço com a informação, pois eu preciso enviar o certificado por http, mas eu nao queria que o cliente apontasse o diretorio do pfx, mas sim aquela tela de do windows para escolher o certificado, Agradeço ja pela ajuda!! no caso essa tela que tu fala não deve mais existir se é uma API. tu tem que ter algo para ele configurar o certificado no sistema e nesse caso subir via upload o certificado pfx para salvar no banco e quando ele passar a emissão ou uso do certificado tu vai ler ele diretamente do banco passando ao componente Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Membros Pro Vitor Domingos Postado 10 Abril Membros Pro Postado 10 Abril (editado) 20 minutos atrás, Juliomar Marchetti disse: no caso essa tela que tu fala não deve mais existir se é uma API. tu tem que ter algo para ele configurar o certificado no sistema e nesse caso subir via upload o certificado pfx para salvar no banco e quando ele passar a emissão ou uso do certificado tu vai ler ele diretamente do banco passando ao componente É que essa aplicação vai enviar esse certificado junto com outras informações para imitir uma NFCom, o servidor que vai receber essa requisição, ja esta tudo certo. Mas eu quero facilitar para o cliente ter que ir la e direcionar o certificado, ou ate ficar alternando entre dois certificado, por isso falei daquela tela do windows, essa tela: Dai o cliente selecionar qual certificado ele quer, e com isso o meu codigo pega o certificado selecionado e enviar: , nai sei se agora ficou mais claro Editado 10 Abril por Vitor Domingos
Moderadores Juliomar Marchetti Postado 10 Abril Moderadores Postado 10 Abril 1 minuto atrás, Vitor Domingos disse: É que essa aplicação vai enviar esse certificado junto com outras informações para imitir uma NFCom, o servidor que vai receber essa requisição, ja esta tudo certo. Mas eu quero facilitar para o cliente ter que ir la e direcionar o certificado, ou ate ficar alternando entre dois certificado, por isso falei daquela tela do windows, essa tela: Dai o cliente selecionar qual certificado ele quer, e com isso o meu codigo pega o certificado selecionado e enviar: , nai sei se agora ficou mais claro mas não será possível tu fazer dessa forma é isso que to lhe explicando. tu não informa o numero de serie tu vai ter que upar de alguma forma o certificado pfx para essa API não existe outra forma diferente numero serial seria se fosse emissão local pois utiliza de engine do windows Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Membros Pro Vitor Domingos Postado 10 Abril Membros Pro Postado 10 Abril 3 minutos atrás, Juliomar Marchetti disse: mas não será possível tu fazer dessa forma é isso que to lhe explicando. tu não informa o numero de serie tu vai ter que upar de alguma forma o certificado pfx para essa API não existe outra forma diferente numero serial seria se fosse emissão local pois utiliza de engine do windows Ahh, Beleza, poderia me citar/direcionar algum código que trata e enviar esse certificado??
Moderadores Juliomar Marchetti Postado 11 Abril Moderadores Postado 11 Abril 21 horas atrás, Vitor Domingos disse: Ahh, Beleza, poderia me citar/direcionar algum código que trata e enviar esse certificado?? https://www.youtube.com/watch?v=mk7Eahw56ec exemplo de gravação de certificado no banco https://www.youtube.com/watch?v=mJMapxEt4zQ configurar para linux ou android no caso console Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
marcelomgoncalves Postado 25 Setembro Postado 25 Setembro Em 11/03/2023 at 18:43, RaphaelComba disse: Boa noite pessoal não sei se o tópico já foi resolvido, mas apanhei bastante para fazer uma requisição até achar o código que o amigo postou e funciona perfeitamente, para quem estiver com duvida de como funciona essa chamada do certificado via o arquivo .pem eu tive o mesmo problema, pois eu somente possuía o arquivo .pfx, mas felizmente encontrei uma forma de fazer, para os casos onde vocês possuírem apenas o arquivo .pfx é preciso fazer a conversão via OpenSSL com os seguintes comandos: openssl pkcs12 -in <filename.pfx> -clcerts -nokeys -out certificate.crt openssl pkcs12 -in <filename.pfx> -nocerts -nodes -out private.key comandos o parametro <filename.pfx> é o caminho do certificado, após essa conversão vai ser criados os arquivos .crt e . key e podem ser chamados assim: SSLIOHandler.SSLOptions.CertFile := 'C:\Users\Maquina1\Desktop\Serasa\Cert.crt'; SSLIOHandler.SSLOptions.KeyFile := 'C:\Users\Maquina1\Desktop\Serasa\Cert.key'; segue o código completo: var HTTPClient: TIdHTTP; SSLIOHandler: TIdSSLIOHandlerSocketOpenSSL; begin HTTPClient := TIdHTTP.Create(nil); HTTPClient.Request.Clear; HTTPClient.Request.CharSet := 'utf-8'; HTTPClient.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Maxthon; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618)'; HTTPClient.Request.ContentType := 'application/json'; HTTPClient.Request.CustomHeaders.Clear; HTTPClient.Request.CustomHeaders.FoldLines := false; HTTPClient.Request.CustomHeaders.Values['Content-Type'] := 'application/json; application/x-www-form-urlencoded;'; HTTPClient.HandleRedirects := True; HTTPClient.HTTPOptions := [hoKeepOrigProtocol, hoInProcessAuth]; SSLIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil); try // Set up SSL IO Handler with certificate SSLIOHandler.SSLOptions.Mode := sslmClient; SSLIOHandler.SSLOptions.VerifyMode := []; SSLIOHandler.SSLOptions.VerifyDepth := 0; SSLIOHandler.SSLOptions.CertFile := 'C:\Users\Maquina1\Desktop\Serasa\Cert.crt'; SSLIOHandler.SSLOptions.KeyFile := 'C:\Users\Maquina1\Desktop\Serasa\Cert.key'; SSLIOHandler.SSLOptions.SSLVersions := [sslvTLSv1_2]; // Set up HTTP client with SSL IO Handler HTTPClient.IOHandler := SSLIOHandler; // Make API call Result := HTTPClient.Get(APIEndpoint); // APIEndpoint = sua url finally HTTPClient.Free; SSLIOHandler.Free; end; end; Obs: Faça download do OpenSSL (https://sourceforge.net/projects/openssl/) e execute o arquivo OpenSSL.exe e execute os comando acima. fontes da conversão do certificado: https://support.kaspersky.com/KSC/12/pt-BR/201428.htm Um adendo, dependendo da versão do OpenSSL, pode apresentar uma mensagem de erro como a seguir, com um texto explicativo: 801B5126747F0000:error:0308010C:digital envelope routines:inner_evp_generic_fetch:unsupported:../crypto/evp/evp_fetch.c:349:Global default library context, Algorithm (RC2-40-CBC : 0), Properties (), para entendimento, isso se refere ao seguinte: Isso informa que o arquivo foi criptografado com um algoritmo de criptografia não suportado (RC2-40-CBC). Esse algoritmo agora é considerado legado e inseguro. O algoritmo ainda está disponível em nosso provedor legado. Por favor, tente adicionar "-legacy" à sua linha de comando. Para resolver esse erro: adicione a diretiva -legacy aos comandos: openssl pkcs12 -in <filename.pfx> -legacy -clcerts -nokeys -out certificate.crt openssl pkcs12 -in <filename.pfx> -legacy -nocerts -nodes -out private.key
marcelomgoncalves Postado 25 Setembro Postado 25 Setembro Em 09/12/2022 at 10:19, gkenji disse: Esse fonte é muito antigo Moysés, não vo lembrar tudo.. Mas passando o olho ai, é o componente do Indy TIdHTTP Variaveis deve ser isso HttpClient: TIdHTTP; JsonToSend: TMemoryStream; Para acertar os uses, é só colocar um componente do indy TIdHttp e um TIdSSLIOHandlerSocketOpenSSL Para o Delphi 11.3 ou community Agora, marcelomgoncalves disse: Para o Delphi 11.3 ou community insira as seguintes units na cláusula uses: IdBaseComponent, IdComponent, IdIOHandler, IdIOHandlerSocket,IdIOHandlerStack, IdSSL, IdSSLOpenSSL, IdTCPConnection, IdTCPClient, IdHTTP;
Recommended Posts
Crie uma conta ou entre para comentar
Você precisar ser um membro para fazer um comentário
Criar uma conta
Crie uma nova conta em nossa comunidade. É fácil!
Crie uma nova contaEntrar
Já tem uma conta? Faça o login.
Entrar Agora