O iOS rejeitou o seu túnel strongSwan: compare as propostas IKE
Um endereço que funciona e um certificado válido podem ainda perder a negociação. Compare as linhas ike e esp com o que o telefone aceita.
Nada no certificado ou no endereço explica por que um iPhone que no ano passado se ligava ao strongSwan falha este ano. Nada no endereço, na chave pré-partilhada ou na identidade do cliente teve de mudar. O que mudou foi a lista de transformações que o cliente integrado do telefone está disposto a negociar, e assim que essa lista deixa de se sobrepor à do servidor, a troca termina antes de se examinar a identidade de alguém.
A linha de registo que decide
Aumente o nível de registo dessa ligação e encontre as duas entradas que decidem o resultado: o que o telefone ofereceu e o que o servidor escolheu. Se o registo termina sem uma proposta selecionada e relata que nada coincidiu, a autenticação nunca foi tentada. Um certificado novo e uma palavra-passe nova não mudam nada nesse ponto, porque ambos são consumidos numa fase posterior. Nenhum dos dois pode influenciar um resultado decidido antes de a identidade ser examinada.
Separe as duas formas de falha antes de editar o que quer que seja. Nenhuma edição das transformações salva credenciais rejeitadas, e nenhuma correção das credenciais salva uma transformação rejeitada. A entrada de registo que nomeia uma proposta selecionada diz-lhe em qual dos dois casos está. Sem essa entrada, está a adivinhar.
A linha selecionada nomeia a proposta pelo seu conjunto de transformações e não por um rótulo simpático. Compare os campos de cifra, integridade e grupo nessa linha com a lista que o telefone enviou, porque uma divergência em qualquer um dos campos basta para perder.
O que mudou no telefone
Uma versão do iOS reduziu os algoritmos que o cliente está disposto a usar. Hashes de integridade fracos, grupos Diffie-Hellman pequenos e propostas que listam opções antigas primeiro deixaram de ser aceitáveis.
Listas mais longas não são mais seguras aqui. A seleção segue o conjunto aceite do telefone e a sua própria ordem de preferência, por isso um servidor que anuncia um catálogo amplo pode ainda perder a negociação quando as entradas modernas não são as escolhidas. Prefira uma lista curta com as entradas modernas à frente. Uma lista longa que abre com opções antigas convida exatamente a falha que está a tentar evitar. O conjunto aceite é uma restrição externa que se desloca a cada atualização do cliente, portanto uma configuração que funcionava ontem é uma prova sobre ontem.
Um par que ainda negoceia
Para os telefones atuais basta uma única combinação moderna. Um par que negoceia tem este aspeto:
ike=aes256-sha2_256-modp2048
esp=aes256-sha2_256
A linha ike transporta a cifra, a integridade e o grupo Diffie-Hellman usados enquanto a troca de chaves decorre. A linha esp cobre apenas o canal de dados, porque o grupo já foi decidido antes de se aplicar. Recarregue a ligação ou reinicie o daemon e depois volte a ligar o telefone. Mantenha esse valor de grupo apenas se todos os clientes que serve ainda o aceitarem, e não alargue a proposta a todos só porque um par antigo precisa de mais.
Três locais para corrigir, um costuma estar fechado
- Uma proposta moderna para cada par. Correto quando todos os clientes são telefones e computadores atuais. Apaga as transformações antigas em vez de negociar à volta delas.
- Uma segunda definição de ligação para clientes Apple. Mantém um par antigo vivo e dá ao telefone uma proposta que ele aceita. Custa mais um bloco de ligação e torna a exceção visível.
- Mudar o cliente. Raramente ao seu alcance: quando um sistema de gestão ou uma aplicação distribui o perfil, não há editor de propostas para tocar, e o cliente integrado não expõe nenhum.
Escolha a segunda opção quando um dispositivo fora do seu controlo não pode ser atualizado. Escolha a primeira quando pode retirar o par antigo e prefere transportar uma única política.
De qualquer forma, a escolha fica visível na configuração, e é esse o ponto. Uma reversão silenciosa que negoceia em baixa até uma transformação antiga é pior do que um bloco explícito, porque nenhuma revisão a trará alguma vez à superfície.
Prove-o e só depois registe
Volte a ligar e verifique três factos separados no servidor: foi selecionada uma proposta, a ligação aparece como estabelecida e o cliente recebeu um endereço. Um handshake estabelecido sem endereço remoto aponta para o pool ou para os seletores de tráfego, e pertence a uma alteração própria. Tratar as duas coisas em conjunto faz uma negociação resolvida parecer não resolvida.
Anote o conjunto de transformações que foi aceite, quando o alterou e que compilação do cliente verificou. A próxima atualização pode voltar a deslocar o requisito, e os valores que funcionaram são a primeira coisa que vai querer ter ao lado dos novos.