Pré-Requisitos: Putty, OpenSSH, OpenSSL e Windows Subsystem for Linux (WSL)
Observação Importante: Não se deve utilizar a ferramenta PUTTYGEN para geração dos certificados de LOGIN.
Recomenda-se utilizar apenas a ferramenta ssh-keygen apenas para este processo de geração e a openssl para eventual conversão de formatos de chaves, caso for necessário.
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:
ssh-keygen -t rsa -m PEM -f id_rsa
Este comando, gerará um par de certificados público e privado normalmente chamada de (id_rsa.pub e id_rsa) respectivamente. Em ambiente Linux/WSL, favor verificar se os formatos de chaves, com o auxílio do comando file id_rsa*, estão conforme a tabela abaixo:
Arquivo Gerado | Tipo da chave |
---|---|
id_rsa | PEM RSA private key |
id_rsa.pub | OpenSSH RSA public key |
Feito este procedimento, todo o conteúdo do arquivo id_rsa.pub deverá ser acrescentado dentro do arquivo ~/.ssh/authorized_keys no usuário do servidor SFTP em que terá acesso.
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.
Observações importantes
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)
- "PEM" (PEM chave pública)
IMPORTANTE: Caso for observado que o certificado de login gerado não esteja no formato PEM, é necessário converter o certificado (no arquivo id_rsa) Os formatos: "RFC4716" (RFC 4716/SSH2 pública ou chave privada) e "PKCS8" (PKCS8 pública ou chave privada) suportados pela a ferramenta ssh-keygen, não estao homologados com subsistema de SFTP do Application Server podendo ocorrer erros ao realizar o Login caso forem utilizados.
Para converter, para o formato compatível, é necessário realizar o seguinte procedimento na linha de comando (Requer OpenSSL):
openssl rsa -in id_rsa -outform pem > id_rsa.pem
Caso necessitar gerar um certificado no formato Putty, para algum outro fim sem ser para uso no Protheus, é possível converter o certificado para o formato PPK utilizando o seguinte comando:
puttygen id_rsa -o minhachave.ppk -O private
Lembrando novamente que este certificado no formato Putty (PPK) não é suportado pelo o Protheus não devendo ser utilizado.
Feito estes procedimentos, é interessante conferir novamente se o formato dos certificados estão de acordo com o reportado ao executar o comando no WSL ou Linux (considerando que os arquivos de certificados estão na mesma pasta):
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.
IMPORTANTE: Nunca se deve utilizar certificados no formato PUTTY (PPK) para a plataforma Protheus pois não são compatíveis