Pré-Requesitos: Ambiente Linux (Preferencialmente) e Puttygen.
Atualmente, existem vários tipos de certificados de Login que podem ser utilizados no SFTP. São elas: RSA Key (Padrão), DSA Key, ECDSA Key (Elliptic Curve), Ed25519 Key (EdDSA Curve). Na plataforma, recomenda-se utilizar o padrão RSA Key.
Para gerarmos um par de chaves publica e privada compatível com o subsistema de SFTP do Protheus, devemos realizar os seguintes procedimentos:
Preferencialmente, em ambiente Linux, para gerar os pares de chaves públicas e privadas, é necessário utilizar o seguinte comando (Sempre com o parâmetro -m PEM):
ssh-keygen -m PEM
Caso não houver disponibilidade de utilizar o ambiente Linux, é possível instalar o WSL no Windows para suprir essa necessidade conforme o link:
https://learn.microsoft.com/pt-br/windows/wsl/install
Este comando, gerará um par de certificados público e privado normalmente chamada de (id_rsa.pub e id_rsa) respectivamente.
Nota: A ferramenta ssh-keygen suporta os seguintes modos de geração do certificados: "RFC4716" (RFC 4716/SSH2 pública ou chave privada), “PKCS8” (PKCS8 pública ou chave privada) or "PEM" (PEM chave pública)
Feito estes procedimentos, é necessário converter o certificado (id_rsa) para o formato PEM RSA private key (Importante). Pois, por padrão, os formatos dos certificados RFC4716 e PKCS8, suportados pela a ferramenta ssh-keygen, não são compatíveis totalmente com subsistema de SFTP do APPSERVER podendo ocorrer erros ao realizar o Login.
Para converter, para o formato compatível, é necessário realizar o seguinte procedimento na linha de comando:
openssl rsa -in id_rsa -outform pem > id_rsa.pem
Caso necessitar, é possível converter o certificado para o formato PPK utilizando o seguinte comando:
puttygen id_rsa -o minhachave.ppk -O private
Feito estes procedimentos, é interessante conferir se o formato dos certificados estão de acordo com o reportado ao executar o comando no WSL ou Linux:
file *
Ao executar o comando o resultado deverá ser:
Arquivo Gerado | Tipo da chave |
---|---|
id_rsa | PEM RSA private key |
id_rsa.pem | PEM RSA private key |
id_rsa.pub | OpenSSH RSA public key |
minhachave.ppk | PuTTY Private Key File, version 3, algorithm ssh-rsa |
Nota: O formato da chave privada (id_rsa) nunca deverá ser OpenSSH RSA private key uma vez que este não é suportado.
No arquivo APPSERVER.INI, devemos configurar, conforme o exemplo abaixo, a seção SFTP para que as funções de download e upload funcionem corretamente:
[SFTP]
privatekey = D:/Keys/id_rsa
publickey = D:/Keys/id_rsa.pub
certpassword = teste12345
Note que o certificado, neste exemplo, foi gerado com uma senha "teste12345". Caso o certificado tenha sido gerado sem nenhuma senha, devemos omitir a chave certpassword nesta seção SFTP.