Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Corrigido erros de ortografia e adicionado referência ao novo artigo sobre erro de conexão SSL
Composition Setup
import.css=/download/attachments/6062824/tecnologia.css
Portuguese

Pagetitle
Acesso a Web Services que exigem certificados de CA
Acesso a Web Services que exigem certificados de CA

Existem Web Services exigem conexão segura para se acessar (SSL), exigindo certificados de uma autoridade certificadora (CA). Alguns WS exigem ainda certificados de cliente e chaves privadas(normalmente com senha), para poder identificar quem é o cliente.

Para os casos onde são necessários esses certificados de CA e cliente, são

...

utilizados arquivos PFX, que são pacotes que instalam esses arquivos no sistema. Esses arquivos foram criados originalmente no sistema Windows e após a instalação ficam

...

armazenados no repositório central de certificados do Windows. Ao utilizar as chamadas padrão do Windows para a conexão SSL, o sistema verifica em seu repositório toda a dependência de certificados

...

necessários e os utiliza para efetuar a conexão.

O

...

Totvs Application Server, por ser multiplataforma, utiliza uma biblioteca de conexão SSL chamada OpenSSL, que exige que seja informado no momento da conexão todos os arquivos de certificados que serão utilizados. Para utilizar os arquivos PFX com a classe AdvPL TWsdlManager, que também utiliza a OpenSSL, é necessário extrair do PFX os arquivos de certificado e chave utilizando por exemplo as funções AdvPL PFXCA2PEM, PFXCert2PEM e PFXKey2PEM.

Normalmente o PFX contém no certificado de CA apenas a cadeia de certificados mais necessária, pois conta com o comportamento do Windows, que procurará no repositório os certificados que faltarem. Nesse caso, após feito a extração dos arquivos de

...

certificado e chave do PFX, a conexão feita pela TWsdlManager não é realizada, devido a falta de certificados na cadeia de certificados de CA.

Para resolver esse problema é necessário criar um novo arquivo de certificado de CA através do procedimento abaixo descrito, realizado em máquina Windows e criado em conjunto com Marylly Araujo Silva.

  • Acesse o endereço do WS pelo navegador e acesse a opção para visualização do Certificado Digital:

(Google Chrome)

...

Image Added

(Internet Explorer)

...

Image Added

...

Image Added

  • Clique na aba "Detalhes" e clique em "Copiar para Arquivo...":

...

Image Added

  • Em seguida, clique em "Avançar", selecione o formato "X.509 codificado na base 64 (*.cer)" e clique em "Avançar" novamente:

...

Image Added

...

Image Added

  • Defina o caminho e o nome do arquivo de certificado (.CER) que será gerado na exportação e clique em "Avançar" e em seguida "Concluir":

...

Image Added

...

Image Added

  • Ao concluir a exportação do certificado, será necessário exportar as três Autoridades Certificadoras. Para isso acesse a aba "Caminho de Certificação" nas informações do certificado:

...

Image Added

  • Para cada uma das Autoridades Certificadoras (nesse caso, Autoridade Certificadora Raiz Brasileira v2, Autoridade Certificadora SERPRO v3 e Autoridade Certificadora do SERPRO Final v4), selecione a mesma, clique em "Exibir Certificado" e siga as etapas para a exportação do arquivo .CER:

(Autoridade Certificadora Raiz Brasileira v2)

...

Image Added

...

Image Added

...

Image Added

...

Image Added

...

Image Added

...

Image Added

(Autoridade Certificadora SERPRO v3)

...

Image Added

...

Image Added

...

Image Added

...

Image Added

...

Image Added

...

Image Added

(Autoridade Certificadora do SERPRO Final v4)

...

Image Added

...

Image Added

...

Image Added

...

Image Added

...

Image Added

...

Image Added

  • Após exportar os quatro arquivos, crie um novo arquivo de texto em branco e abra-o:

...

Image Added

  • Em seguida, abra cada arquivo exportado com um editor de textos e copie os dados para o novo arquivo de texto. ATENÇÂO: A cópia dos dados para o novo arquivo deve ser feita na ordem correta. A ordem a ser seguida é a ordem inversa da apresentada nas informações do certificado:

...

Image Added

Nesse caso, o primeiro arquivo a ser copiado é o Certificado em si, seguido da Autoridade Certificadora do SERPO Final v4, Autoridade Certificadora SERPRO v3 e por último a Autoridade Certificadora Raiz Brasileira v2:

(1 – Certificado)

...

Image Added

(2 – Autoridade Certificadora do SERPO Final v4)

...

Image Added

(3 – Autoridade Certificadora SERPRO v3)

...

Image Added

(4 - Autoridade Certificadora Raiz Brasileira v2)

...

Image Added

  • Após copiar os dados dos quatro arquivos exportados para o novo arquivo criado, salve o novo arquivo e altere sua extensão para ".PEM":

...

Image Added

  • Coloque o arquivo na pasta do Protheus, juntamente com os demais criados (de chave e certificado de

...

  • cliente):

...

Image Added

  • Coloque nas propriedades da TWsdlManager o caminho dos arquivos que serão utilizados:
Bloco de código
languagecpp
themeEclipse
languagecpp
titleExemplo de uso da TWsdlManager
linenumberstrue
collapsefalse
user function tstwsdl()
  Local cURL := "https://myurl"
  Local oWsdl
  
  oWsdl := TwsdlManager():New()
  
  oWsdl:cSSLCACertFile := "\CA.pem"
  oWsdl:cSSLCertFile   := "\certif_cert.pem"
  oWsdl:cSSLKeyFile    := "\certif_key.pem"
  oWsdl:cSSLKeyPwd     := "password" //se necessário
  
  if oWsdl:ParseURL( cURL ) == .F.
    conout( "Erro: " + oWsdl:cError )
  else
    conout( "Sucesso" )
  endif

return

Caso esse procedimento não resolva o problema de conexão SSL, o que provavelmente está acontecendo é que o navegador não está exibindo todos os certificados necessários à conexão. Para resolver esse problema verifique o artigo sobre erro de conexão SSL.

Veja também