Skip to content

Commit 05c3a6b

Browse files
Gabriel Froneseduardo.lima
authored andcommitted
Ajustes no README.md do projeto.
1 parent 1a46f02 commit 05c3a6b

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

README.md

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
# nfe
2-
Bibliotecas para geração, validação, assinatura e transmissão de XMLs da NFe. Pretendo desenvolver essa biblioteca conforme a necessidade surgir. Por enquanto apenas as consultas de Status, NFe e Cadastro estão disponíveis.
32

4-
## Atenção!!
5-
A crypto lib standard do Go apresenta problemas na comunicação com a Sefaz-RS e o ambiente virtual SV-RS. Há um erro 403 intermitente que não consegui debugar, de forma que optei por usar o openSSL, apesar de toda a dificuldade de se colocar para funcionar em Windows. Com tempo, pretendo tentar localizar se o erro está na crypto/tls ou na Sefaz-RS e reportar para poder voltar a utilizar a biblioteca.
3+
Bibliotecas para geração, validação, assinatura e transmissão de XMLs da NFe. Pretendo desenvolver essa biblioteca conforme a necessidade surgir. Por enquanto apenas as consultas de Status, NFe e Cadastro estão disponíveis.
64

75
## Extraindo chaves de um certificado A1 (.pfx) para uso com o biblioteca
6+
87
```
98
openssl pkcs12 -in certificado.pfx -out ~/client.pem -clcerts -nokeys -nodes
109
openssl pkcs12 -in certificado.pfx -out ~/key.pem -nocerts -nodes
1110
```
1211

1312
## Consulta NFe
13+
1414
### Exemplo
15+
1516
```go
1617
package main
1718

@@ -46,3 +47,11 @@ func main() {
4647
fmt.Printf("Arquivo JSON: %v\n", string(jsonfile))
4748
}
4849
```
50+
51+
## Problemas de comunicação com a Sefaz-RS e ambientes virtuais SV-RS
52+
53+
Usando a `crypto/tls` padrão do Go, foi observado um problema intermitente de comunicação com os ambientes da Sefaz-RS, com resposta 403 sendo retornada. O problema acontece porque a `crypto/tls` não envia o certificado durante o handshake quando a `CertificateRequest` do servidor especifica autoridades certificadoras que não batem com a CA do certificado [[source](https://github.com/golang/go/blob/79d4defa75a26dd975c6ba3ac938e0e414dfd3e9/src/crypto/tls/common.go#L1320-L1347)]. Outras Sefazes não enviam uma lista de CAs permitidas, não apresentando esse problema. Mesmo a Sefaz-RS, em algumas requests não envia lista de CAs permitidas, fazendo com que o problema seja intermitente.
54+
55+
Durante depuração, identifiquei que de fato, a CA do meu certificado não estava na lista de CAs permitidas pelo servidor, de maneira que faz sentido que a `crypto/tls` não envie, mas não fica claro porque outras bibliotecas, como a OpenSSL sempre funcionam.
56+
57+
Um workaround possível é compilar com uma versão alterada da `crypto/tls` sempre ignorando a instrução de CAs permitidas, mas isso pode ter outras consequencias indesejadas.

0 commit comments

Comments
 (0)