Define em memória as configurações para conexão SSL.
Sintaxe
HTTPSSLClient( < nSSL2 >, < nSSL3 >, < nTLS1 >, < cPassword >, < cCertPath >, < cKeyPath >, < nHSM >, [ lClient ], [ nVerbose ], [ nBugs ], [ nState ], [ cCACertPath ] )
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência |
---|---|---|---|---|
nSSL2 | numérico | Habilita/Desabilita SSL2. | X | |
nSSL3 | numérico | Habilita/Desabilita SSL3. | X | |
nTLS1 | numérico | Habilita/Desabilita TLS1. | X | |
cPassword | caractere | Senha para a chave privada e/ou certificado. | X | |
cCertPath | caractere | Indica o caminho do certificado de cliente. | X | |
cKeyPath | caractere | Indica o caminho da chave privada de cliente. | X | |
nHSM | numérico | Define se utiliza HSM. | X | |
lClient | lógico | Indica se a definição será para conexão pelo SmartClient. | ||
nVerbose | numérico | Habilita/Desabilita Verbose. | ||
nBugs | numérico | Habilita/Desabilita Bugs. | ||
nState | numérico | Habilita/Desabilita State. | ||
cCACertPath | caractere | Indica o caminho do certificado de CA. |
Observações
Os parâmetros da função equivalem à configuração contida na seção SSLConfigure do arquivo ini do AppServer, sendo relacionados da seuinte forma:
Parâmetro | Chave da SSLConfigure |
---|---|
nSSL2 | SSL2 |
nSSL3 | SSL3 |
nTLS1 | TLS1 |
cPassword | PassPhrase |
cCertPath | CertificateClient |
cKeyPath | KeyClient |
nHSM | HSM |
nVerbose | Verbose |
nBugs | BUGS |
nState | STATE |
cCACertPath | SecondCertificateClient |
- Para definição no AppServer, o valor padrão dos parâmetros nHSM, nVerbose, nBugs, nState e cCACertPath seguem o padrão da configuração da seção SSLConfigure.
- Caso nHSM seja 1, o formato aceito no caminho dos parâmetros cCertPath e cKeyPath é "slot_<num>-id_<idhex>" ou "slot_<nem>-label_<label>", onde <num> é o número do slot, igual ao retornado pela função HSMSlotList, e <idhex> é o id do objeto em hexadecimal, sendo cada 2 caracteres a representação hexadecimal de um caractere da tabela ASCII.
- Para definição seja no AppServer, se nHSM for 0 e o caminho apontado por cCertPath, cKeyPath ou cCACertPath não for no AppServer, a aplicação dará uma exceção com a mensagem: "Only server path are allowed (HttpSSLClient)".
- Para definição seja no SmartClient, se nHSM for 0 e o caminho apontado por cCertPath, cKeyPath ou cCACertPath não for no SmartClient, a aplicação dará uma exceção com a mensagem: "Only client path are allowed on client side (HttpSSLClient)".
- O valor padrão de lClient é .F..
- Os parâmetros lClient, nVerbose, nBugs, nState e cCACertPath estão disponíveis a partir da build 7.00.131227A com data de geração superior a 11/03/2016.
Exemplos
user function exemplo() Local cSlot := "0" Local cModule := 'C:\Program Files (x86)\Feitian\ePass2000_FT12\ngp11v211.dll' // Pronova Local cPass := "12345678" Local idHex := "80125761605040BE9A5D71B677387F67" // Katoen Local cUrl := 'https://homologacao.nfe.fazenda.sp.gov.br:443/nfeWEB/services/NfeStatusServico.asmx' Local cSoapSend := '<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/'; 'XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="'; 'http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><nfeStatusServicoNF xmlns="'; 'http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico"><nfeCabecMsg><?xml version="1.0"'; ' encoding="UTF-8"?><cabecMsg xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.02">'; '<versaoDados>1.07</versaoDados></cabecMsg></nfeCabecMsg><nfeDadosMsg><?xml version="1.0"'; ' encoding="UTF-8"?><consStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.07">'; '<tpAmb>2</tpAmb><cUF>35</cUF><xServ>STATUS</xServ></consStatServ></nfeDadosMsg></nfeStatusServicoNF>'; '</soap:Body></soap:Envelope>' Local aHeadOut := {'SOAPAction: http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico/nfeStatusServicoNF','Content-Type:'; 'text/xml; charset=utf-8','User-Agent: Mozilla/4.0 (compatible; Protheus 7.00.100812P-20101227; ADVPL WSDL Client 1.101007)'} Local XMLHeadRet:= "" HTTPSSLClient(0, 1, 1, cPass, "slot_"+cSlot+"-id_"+idHex, "slot_"+cSlot+"-id_"+idHex, 1) HSMInitialize(cModule) XMLPostRet := HTTPSPost(cUrl, "", "", "", "", cSoapSend, 30, aHeadOut, @XMLHeadRet) if !Empty(XMLPostRet) conout(" 1 - Comunicacao realizada com sucesso !!!") conout("[" + XMLPostRet + "]") else conout(" 2 - Falha na Comunicacao!!!") endif return