Gerar um par de chaves WireGuard localmente: comandos e cuidado
Dois comandos geram o par; o trabalho está na umask, na localização do arquivo e em saber que só a metade pública vai para o par remoto. Um percurso local.
Dois comandos geram um par de chaves WireGuard e ambos vêm com as ferramentas padrão, então esta tarefa não precisa de nenhum site que se proponha a criar uma chave por você. O que falha nunca é a aritmética da curva; são os bits de permissão, o lugar onde o arquivo cai e o que depois é enviado ao outro extremo. A sequência abaixo começa num diretório vazio e termina num par remoto que carrega tráfego. Leia-a uma vez antes de executá-la, porque a primeira linha só importa se a seguinte correr no mesmo shell.
Gerar o par num só shell
O fluxo de trabalho documentado restringe a criação de arquivos antes de o valor privado existir e depois deriva dele o valor público. As três linhas pertencem juntas a uma única sessão de shell:
umask 077 # applies to files created next, so keep the next line in this shell
wg genkey | tee privatekey | wg pubkey > publickey
wg pubkey < privatekey # re-derive and compare with publickey
wg genkey escreve uma chave privada Curve25519 de 32 bytes em base64; wg pubkey lê-a e deriva a chave pública correspondente, e tee guarda o valor privado enquanto o passa adiante pelo tubo. Essa ordem é a razão de a linha de permissões vir primeiro e de colar o tubo num segundo terminal a perder em silêncio. Os nomes dos arquivos são ilustrativos, e o que importa é que ambos os arquivos caiam num lugar que o dispositivo proprietário controla. Se já existir um arquivo privado com permissões padrão, chmod 600 privatekey corrige o arquivo atual e não faz nada quanto às cópias feitas antes.
Manter a metade privada num só dispositivo
O valor privado pertence à máquina que vai possuir a identidade, num diretório que essa máquina protege e que as suas cópias de segurança tratam como uma credencial. Não pertence a uma pasta partilhada, a uma mensagem para si mesmo ou a um trecho anexado a um pedido de suporte, e uma cópia embutida torna o arquivo de configuração exatamente tão sensível como a chave. Uma chave que viveu em três lugares não pode ser repensada depois, e essa é a razão prática para a manter num só.
Destruir deliberadamente um arquivo retirado faz parte do mesmo hábito. Deixá-lo numa pasta de transferências até alguém reparar, não.
O que o operador do par remoto precisa de você
O outro lado precisa do valor público e da disposição de endereços que o seu operador escolheu, nada mais. Envie essa cadeia pública pelo canal que o operador espera e depois confirme a que entrada de par remoto ela foi anexada antes de alguém a testar, porque uma chave correta na secção errada falha de uma forma que parece um problema de chave. Envie-a como uma só linha sem quebra, porque uma chave partida em duas linhas cola-se no arquivo de configuração sem queixa e depois nunca corresponde.
Gerar uma chave não autoriza nada por si só. O par remoto tem de ser configurado para a aceitar, e o passo de configuração pertence a quem gere esse extremo.
Testar o par com uma troca real
Um par de chaves identifica um extremo de um túnel; não cria qualquer rota, qualquer entrada de resolução, qualquer regra de encaminhamento nem qualquer permissão de firewall. Depois de o par remoto estar aprovisionado, teste a troca em vez do arquivo: um handshake que aparece em wg show, um endereço que responde dentro do túnel e um pedido de aplicação que depende da rota. Esse trio separa uma chave errada de uma chave correta e de um caminho em falta.
Mantenha uma identidade por dispositivo quando a implantação o permitir, para que uma unidade perdida possa ser revogada sozinha em vez de obrigar todos a regenerar chaves. Essa decisão é também o que torna seguro executar o procedimento de substituição abaixo.
Substituir uma chave sem intervalo
Gere a substituição no dispositivo, acrescente a nova chave pública como par remoto adicional, confirme que transporta tráfego e só então retire a antiga. Fazê-lo nessa ordem significa que o túnel nunca tem um momento sem identidade válida, e a reversão é simplesmente apagar a entrada que acabou de acrescentar.
Mantenha o arquivo privado substituído até o novo par remoto ser confirmado e depois destrua-o de propósito. O início rápido do WireGuard é a referência para os próprios comandos, e é curto o suficiente para o ler por inteiro antes de começar.