XCBLOG
On Outubro 31, 2021 by adminiOS Code Signing Tutorials
Esta é a parte 1 da série tutorial de Assinatura de Código iOS. Esta série cobre os fundamentos do processo de assinatura de código iOS. Você pode encontrar todos os posts na série ligada abaixo
- Assinatura de Código iOS: 1. Começando
- Assinatura de Código iOS: 2. Pedidos de Assinatura de Certificado
- Assinatura de Código iOS: 3. Certificados
- Assinatura de Código iOS: 4. Perfis de provisionamento
- Assinatura de código iOS: 5. Assinatura de aplicativo iOS
*******************************************************
Genuinamente, dispositivos iOS só executam aplicativos que foram assinados por desenvolvedores confiáveis, a menos que você tenha dispositivos iOS quebrados na prisão. Se você é um engenheiro iOS, você deve ter lutado com a assinatura de código em algum momento. Como a assinatura de código é uma das tarefas dolorosas e incômodas para desenvolvedores iOS, mas eles não podem fugir das atividades de assinatura de código. Os perfis de assinatura de código e de provisionamento têm sido um incômodo contínuo e continuarão a existir até que os desenvolvedores entendam completamente o básico da assinatura de código. Este é um post introdutório que explica o processo de assinatura de código com seus benefícios e limitações.
Sobre esta série
A assinatura de código dos aplicativos iOS é um dos tópicos quentes para cada desenvolvedor iOS. Embora existam vários recursos disponíveis online, assim como a Apple tem uma documentação limpa sobre o processo de assinatura de código, ainda é um mistério. Nesta série, vamos tentar entender o processo de assinatura de código a partir do zero, incluindo o que é necessário para a assinatura de código para o processo de assinatura de código em si. Também vamos explorar a GUI, bem como as formas de linha de comando para fazer as coisas, sempre que aplicável. Começaremos a partir de Pedidos de Assinatura de Certificado para obter o certificado de Desenvolvimento iOS, depois cobriremos o certificado e suas partes internas. Após entender os certificados, faremos um mergulho profundo nos perfis de provisionamento e, finalmente, entenderemos o processo de assinatura de código.
Estas séries são escritas em minhas próprias palavras ou linguagem, fazendo algumas pesquisas na web e na documentação da Apple. Eu cobri todo esse material de referência no post final. Também anexei algumas screenshots do portal Apple Developer e Xcode para que os leitores possam entender os conceitos. Eu tentei esconder todo o conteúdo sensível, mas se houver algo exposto por engano, por favor não me hackeie 🙂
Code Signing
Antes de saltarmos para o modo de assinatura de código dos aplicativos iOS da Apple, vamos explorar o que é assinatura de código em geral. Na vida real, nós assinamos diferentes contratos, acordos para várias coisas. Porque assinamos esses contratos? O que significa para nós assinar e porque é importante? É simples porque assinar contratos nos protege legalmente e temos confiança que quaisquer termos e condições nos contratos não podem ser alterados enquanto o contrato estiver em vigor. A assinatura também garante a segurança de que o contrato vem de autoridades confiáveis e não de golpistas. Significa que assinar contratos nos dá segurança, segurança e confiança.
Simplesmente, assinatura de código é o processo de assinar digitalmente qualquer forma do código para confirmar que quem escreveu o código e garantir que o código não foi alterado ou corrompido quando ele foi assinado. A assinatura do código usa um hash criptográfico para verificar a autenticidade e integridade do código do software. No mundo do software, a assinatura do código garante a identidade do autor, a integridade do código, o sistema de compilação e a versão para que os utilizadores do software se sintam seguros e protegidos enquanto os utilizam. A assinatura de código utiliza vários termos de segurança como chave pública, chave privada, certificados, assinaturas digitais, etc. Existem diferentes abordagens à assinatura de código usadas nas diferentes plataformas, por exemplo Linux, Windows, macOS.
iOS Code Signing
Apple supostamente tem um mecanismo de segurança muito poderoso além de algumas falhas recentes que você pode ter lido nas notícias. É muito difícil para os hackers de chapéu preto quebrar este mecanismo. A Apple também usa um forte mecanismo de assinatura de código para fornecer segurança, integridade e segurança dos aplicativos iOS baixados da Apple App Store. Na maioria das vezes, a assinatura de código iOS parece ser mágica que acontece por baixo do capô. Se funcionar, todos ficam felizes e se não funcionar, todos entram em pânico. A maioria dos engenheiros do iOS não faz ideia do que acontece debaixo do capô quando os aplicativos que eles escreveram estão sendo cantados. Nos últimos dias, a Apple tentou tornar a assinatura de código menos dolorosa, introduzindo o recurso de assinatura automática no Xcode para que a atividade de assinatura de código não interrompa o fluxo principal de desenvolvimento. A assinatura de código na plataforma Apple depende de criptografia de chave pública no padrão X.509. Discutiremos todas estas ferramentas e técnicas mais tarde nesta série.
Por que aprender sobre assinatura de código iOS
Como a maioria das tarefas de assinatura de código estão sendo tratadas pelo Xcode atualmente, então por que devemos nos importar com a assinatura de código e por que devemos investir nosso tempo para aprender sobre isso?
Aqui estão algumas das razões para aprender sobre os internos de assinatura de código:
- Eliminares são os dias em que os engenheiros iOS costumavam implementar aplicações iOS do Xcode instaladas na máquina local. As empresas estão adotando DevOps e CI/CD para implantar softwares assim que compilados, portanto todas as compilações precisam ser automatizadas sem nenhuma interação humana ou GUI.
- Existem milhares de horas desperdiçadas pelo desenvolvedor porque a assinatura de código do Xcode falhou e o desenvolvedor tenta corrigir os problemas de assinatura de código através da regeneração e reparo de certificados e perfis de provisionamento.
- As ferramentas de terceiros como Fastlane tornaram a criação de scripts de compilação muito mais fácil para os desenvolvedores de iOS. No entanto, quando a Apple fez alterações nas tecnologias subjacentes, Fastlane continua a quebrar e os desenvolvedores passam horas, dias e semanas corrigindo os scripts de implementação quebrados. Em alguns casos, os engenheiros têm de esperar até que novas alterações sejam implementadas no Fastlane.
- Se você é desenvolvedor/engenheiro iOS e quer ser um engenheiro iOS para toda a sua vida, então você não precisa aprender sobre essas coisas. No entanto, se você quer crescer em sua carreira, então você deve conhecer as ferramentas subjacentes, tecnologias e todo o ecossistema iOS em detalhes. Você não vai chegar ao iOS Tech Lead ou iOS Tech Architect ou funções similares se você não souber sobre essas tecnologias subjacentes, independentemente de quão bom você é em suas habilidades de desenvolvimento iOS. Como arquiteto técnico, você deve ser capaz de corrigir problemas relacionados à assinatura de código ou infraestrutura similar rapidamente e sem depender de Xcode ou outras ferramentas de terceiros.
Hope que é o suficiente para convencer o importante da assinatura de código. Cabe a você aprendê-lo ou deixá-lo.
Pre-requisito
Vamos mergulhar no mundo da assinatura de código iOS. Vamos cobrir tudo do zero em termos do que é necessário e do que faz debaixo do capô. Para começar, precisamos de seguir as coisas que acredito que todos já tenham se você ler este post.
- macOS
- Apple Developer Membership
- Xcode 9+
Após você ter tudo isso, você está pronto para cavar no material de assinatura de código iOS.
Benefícios da assinatura de código
A Apple quer que passemos pelo complexo processo de assinatura de código porque ele tem alguns benefícios para usuários reais. Os usuários de aplicativos iOS se sentem seguros quando baixam os aplicativos da loja de aplicativos da Apple. A assinatura de código garante que
- O desenvolvedor legítimo escreveu este código e tem uma identidade do assinante ou autor dos aplicativos.
- A assinatura de código garante que o código não foi alterado por alguém desde que foi escrito pelo autor. Ele garante que o código produzido pelo autor é original e que não há nada injetado no código desde que foi assinado pelo autor.
- Os usuários podem baixar os aplicativos dos desenvolvedores em que confiam sem se preocupar muito com a segurança.
A assinatura do código é para segurança e proteção dos usuários iOS para que eles se sintam seguros usando os aplicativos que baixaram da loja de aplicativos.
Limitações da assinatura do código
Embora a assinatura do código seja para a segurança dos usuários, há alguns aspectos que não abordam os problemas de segurança o tempo todo.
- A assinatura de código garante que o código vem de um desenvolvedor legítimo que é membro do programa Apple Developer mas não garante que o código em si esteja livre de vulnerabilidades de segurança.
- A assinatura de código não garante que plugins de aplicativos que carregam dinamicamente durante a execução de aplicativos sejam seguros.
- Não há tecnologia de gerenciamento de direitos digitais ou de proteção contra cópia para o código assinado.
Agora isso, cobrimos a importância de aprender sobre assinatura de código e benefícios e limitações. No próximo post, passaremos pelo importante conceito onde o processo de assinatura de código começa, ou seja, Pedidos de Assinatura de Certificado.
Continuar lendo a Parte 2-: Solicitações de Assinatura de Certificados
Deixe uma resposta