Imagine que você tem 10 anos e quer entender o que são certificados e como eles funcionam. Pense nos certificados como cartões de identidade especiais para computadores e sites que provam que eles são quem dizem ser!
Pense na Internet como um grande teatro onde todos usam máscaras. Como você sabe se alguém é realmente quem diz ser?
Certificados são como crachás de identificação especiais que provam a identidade:
- 🎫 Seu ingresso = Seu computador/telefone
- 🏛️ A segurança do teatro = Autoridade Certificadora (CA)
- 🎭 Atores no palco = Sites e servidores
- 🆔 Crachás de identificação oficiais = Certificados digitais
Assim como um segurança em um teatro verifica os crachás de identificação, seu computador verifica os certificados para garantir que os sites são reais e seguros!
Nosso script é como uma fábrica de certificados que cria diferentes tipos de crachás de identificação para nosso sistema. Vamos ver o que ele produz!
# O script primeiro verifica se tem as ferramentas certas:
- OpenSSL (máquina de fabricar certificados)
- Java keytool (assistente de certificados Android)
- certificates.conf (livro de receitas com todas as configurações)O que é uma CA? Pense nisso como o "Escritório de Crachás de Identificação" em quem todos confiam (wms_ca.crt e wms_ca.key).
Arquivos Criados:
wms_ca.key(2048 bits) - A Chave Mestra 🗝️wms_ca.crt(3650 dias = 10 anos) - O Crachá de Identificação Mestre 🆔
O que acontece:
# Etapa 2a: Cria uma chave mestra super-secreta
openssl genrsa -aes256 -passout pass:wms_ca_password_2024 -out wms_ca.key 2048
# Cria: wms_ca.key (arquivo de chave privada)
# Por quê: Precisamos de uma chave secreta para assinar certificados mais tarde
# Etapa 2b: Cria o certificado mestre
openssl req -new -x509 -days 3650 -key wms_ca.key -out wms_ca.crt
# Requer: wms_ca.key (criado na etapa 2a)
# Cria: wms_ca.crt (certificado público)
# Por que precisamos de wms_ca.key: Para provar que possuímos este certificado e podemos assinar outrosDetalhes Técnicos:
- Tamanho da Chave: 2048 bits (segurança muito forte, como uma fechadura super-complicada)
- Algoritmo: RSA com criptografia AES-256 (o tipo de fechadura mais forte)
- Validade: 10 anos (tempo durante o qual o escritório de crachás fica aberto)
- Protegido por Senha: Sim (precisa de uma senha secreta para usar)
O que é isso? O crachá de identificação especial para nosso site (wms.crt) para que os navegadores confiem nele.
Arquivos Criados:
wms.key(2048 bits) - Chave Privada do Site 🔐wms.csr- Formulário de Solicitação de Certificado 📝wms.crt(365 dias = 1 ano) - Crachá de Identificação do Site 🌐wms.conf- Instruções Especiais 📋
O que acontece:
# Etapa 3a: Cria a chave privada do site
openssl genrsa -aes256 -passout pass:wms_server_password_2024 -out wms.key 2048
# Cria: wms.key (chave privada do servidor)
# Por quê: O servidor precisa de sua própria chave secreta, separada da CA
# Etapa 3b: Cria uma solicitação de crachá de identificação
openssl req -new -key wms.key -out wms.csr -config wms.conf
# Requer: wms.key (criado na etapa 3a) + wms.conf (arquivo de configuração)
# Cria: wms.csr (solicitação de assinatura de certificado)
# Por que precisamos de wms.key: Para provar que controlamos a chave privada do servidor
# Por que precisamos de wms.conf: Contém os detalhes do servidor e as extensões de segurança
# Etapa 3c: A CA carimba a solicitação e cria o crachá oficial
openssl x509 -req -in wms.csr -CA wms_ca.crt -CAkey wms_ca.key -out wms.crt
# Requer: wms.csr (da etapa 3b) + wms_ca.crt (da etapa 2) + wms_ca.key (da etapa 2)
# Cria: wms.crt (certificado do servidor assinado)
# Por que precisamos de wms.csr: Contém a chave pública do servidor e as informações de identidade
# Por que precisamos de wms_ca.crt: Mostra quem está assinando o certificado
# Por que precisamos de wms_ca.key: Prova que somos a CA legítima e podemos assinar certificadosRecursos Especiais (Subject Alternative Names):
- Pode funcionar com:
localhost,wms.local,*.wms.local - Pode funcionar com IPs:
127.0.0.1,192.168.1.188,::1 - Por quê? Para que o mesmo certificado funcione de diferentes endereços!
O que é isso? Criar versões especiais do nosso certificado CA que Windows e Android podem aceitar como se fossem Autoridades Certificadoras reais como VeriSign ou DigiCert!
A Transformação Mágica:
Nosso script pega o certificado CA principal (wms_ca.crt) e cria versões específicas para cada plataforma que cada sistema operacional reconhece e confia.
Arquivos Criados para Windows:
wms_ca.crt- Certificado CA X.509 Padrão 🏛️
O que o torna especial para Windows:
# O certificado CA tem estes atributos compatíveis com Windows:
Subject: /C=US/ST=NewYork/L=NewYork/O=WMSRootCA/OU=CertificateAuthority/CN=WMSRootCA
Basic Constraints: CA:TRUE (Critical)
Key Usage: Certificate Sign, CRL Sign
Validity: 10 anos (3650 dias)Como o Windows reconhece como uma CA real:
- Formato X.509 padrão - Windows entende isso perfeitamente
- Sinalizador CA:TRUE - Diz ao Windows "Eu posso assinar outros certificados"
- Uso Certificate Sign - Permissão para agir como Autoridade Certificadora
- Instalação no armazenamento raiz - Quando instalado em "Autoridades de Certificação Raiz Confiáveis"
A Mágica do Windows:
Quando você instala wms_ca.crt no armazenamento de raiz confiável do Windows:
✅ Windows o trata exatamente como VeriSign, DigiCert ou qualquer CA comercial
✅ Qualquer certificado assinado por esta CA é automaticamente confiável
✅ Navegadores (Chrome, Edge, Firefox) automaticamente confiam nele
✅ Todas as aplicações Windows automaticamente confiam nele
Arquivos Criados para Android:
android_ca_system.pem- Certificado do armazenamento de usuário Android 📱[hash].0(comoa1b2c3d4.0) - Certificado do armazenamento de sistema Android 🔒
Etapa 4a: Criando android_ca_system.pem
# Simplesmente copiar o certificado CA com um nome compatível com Android
copy "wms_ca.crt" android_ca_system.pem
# Requer: wms_ca.crt (da etapa 2)
# Cria: android_ca_system.pem (cópia idêntica com nome diferente)
# Por que precisamos de wms_ca.crt: Este é nosso certificado CA que o Android precisa confiarO que torna android_ca_system.pem especial:
- Formato PEM - Formato de texto preferido do Android (
android_ca_system.pem) - Nome de arquivo descritivo - Ajuda os usuários a identificá-lo durante a instalação (
android_ca_system.pem) - Mesmo conteúdo que wms_ca.crt - Apenas renomeado para clareza
Etapa 4b: Criando o certificado nomeado por hash
# Obter o hash único do certificado
for /f %%i in ('openssl x509 -noout -hash -in "wms_ca.crt"') do set CERT_HASH=%%i
# Requer: wms_ca.crt (da etapa 2)
# Por quê: O sistema Android precisa calcular o hash para criar o nome de arquivo apropriado
# Copiar o certificado com o nome de arquivo hash (como a1b2c3d4.0)
copy "wms_ca.crt" "%CERT_HASH%.0"
# Requer: wms_ca.crt (da etapa 2) + CERT_HASH (calculado acima)
# Cria: [hash].0 (como a1b2c3d4.0)
# Por que precisamos de wms_ca.crt: Mesmo conteúdo de certificado, apenas renomeado para o armazenamento de sistema AndroidPor que este nome de arquivo hash estranho?
- Requisito do sistema Android - Certificados do sistema devem ser nomeados pelo seu hash
- Identificação única - O hash garante que não há conflitos de nomes de arquivo
- Reconhecimento automático - Android carrega automaticamente todos os arquivos .0 no diretório de certificados do sistema
- Busca rápida - Android pode encontrar rapidamente certificados por hash
A Mágica do Android:
Instalação no Armazenamento de Usuário (android_ca_system.pem):
Quando instalado no armazenamento de certificados de usuário Android:
✅ A maioria dos aplicativos confiará nele (se configurados para confiar em certificados de usuário)
✅ Instalação fácil através das Configurações
✅ O usuário pode removê-lo a qualquer momento
❌ Alguns aplicativos focados em segurança ignoram certificados de usuário
### ⛓️ Criando o Arquivo de Cadeia de Certificados
**Arquivos Criados:**
- `wms_chain.crt` - **Cadeia de certificados completa** ⛓️
**O que acontece:**
```bash
# Combinar certificado do servidor + certificado CA
copy "wms.crt" + "wms_ca.crt" wms_chain.crt
# Requer: wms.crt (da etapa 3) + wms_ca.crt (da etapa 2)
# Cria: wms_chain.crt (cadeia de certificados combinada)
# Por que precisamos de wms.crt: O certificado do servidor (fim da cadeia)
# Por que precisamos de wms_ca.crt: O certificado CA (raiz da cadeia)
# Por que combinar: Os navegadores precisam da cadeia completa para verificar a confiança
Por que isso é necessário:
- Caminho de confiança completo - Mostra a cadeia completa do servidor à raiz de confiança (
wms_chain.crt) - Validação mais rápida - Os clientes não precisam buscar certificados ausentes (
wms_chain.crt) - Melhor compatibilidade - Alguns clientes requerem a cadeia completa (
wms_chain.crt) - Otimização Apache - O servidor web pode enviar a cadeia completa imediatamente (
wms_chain.crt)
Vamos ver CADA arquivo que nosso script de certificados cria e entender o que cada um faz!
| Arquivo | Tamanho | Propósito | Plataforma | Manter Secreto? |
|---|---|---|---|---|
wms_ca.key |
~1.7KB | Chave privada CA | Ambas | 🔴 ULTRA SECRETO |
wms_ca.crt |
~1.3KB | Certificado CA | Ambas | 🟢 Compartilhar livremente |
wms.key |
~1.7KB | Chave privada do servidor | Windows | 🔴 Manter secreto |
wms.csr |
~1KB | Solicitação de certificado | Ambas | 🟡 Pode deletar depois |
wms.crt |
~1.3KB | Certificado do servidor | Windows | 🟢 Compartilhar livremente |
wms.conf |
~500B | Config OpenSSL | Ambas | 🟡 Pode deletar depois |
android_ca_system.pem |
~1.3KB | CA usuário Android | Android | 🟢 Compartilhar livremente |
[hash].0 |
~1.3KB | CA sistema Android | Android | 🟢 Compartilhar livremente |
wms_chain.crt |
~2.6KB | Cadeia completa | Windows | 🟢 Compartilhar livremente |
O que é:
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFJDBWBgkqhkiG9w0BBQ0wSTAxBgkqhkiG9w0BBQwwJAQQ...
...
-----END ENCRYPTED PRIVATE KEY-----
Detalhes Técnicos:
- Formato: Chave privada RSA codificada PEM, criptografada AES-256
- Tamanho da Chave: 2048 bits (256 bytes de material de chave)
- Criptografia: AES-256-CBC com derivação de chave PBKDF2
- Senha:
wms_ca_password_2024(do arquivo de configuração) - Propósito: Assina outros certificados para torná-los confiáveis
Por que é ULTRA SECRETO:
- Qualquer pessoa com esta chave pode criar certificados confiáveis (
wms_ca.key) - Poderia se passar por qualquer site se tivesse isso (
wms_ca.key) - Como ter a chave mestra para criar identidades falsas (
wms_ca.key) - Guardar em um cofre, nunca compartilhar, nunca perder! (
wms_ca.key)
O que é:
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJANQ8QgAf7N8pMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV...
...
-----END CERTIFICATE-----
Detalhes Técnicos:
- Formato: Certificado X.509 codificado PEM
- Validade: 10 anos (3650 dias)
- Número de Série: Identificador único gerado aleatoriamente
- Algoritmo de Assinatura: SHA-256 com RSA
- Chave Pública: Chave pública RSA de 2048 bits (corresponde à chave privada)
Campos do Certificado:
Subject: C=US, ST=New York, L=New York, O=WMS Root CA, OU=Certificate Authority, CN=WMS Root CA
Issuer: C=US, ST=New York, L=New York, O=WMS Root CA, OU=Certificate Authority, CN=WMS Root CA
(Autoassinado: Subject = Issuer)
Extensões:
Basic Constraints: CA:TRUE (Critical)
Key Usage: Certificate Sign, CRL Sign
Subject Key Identifier: [hash único]
Authority Key Identifier: [idêntico ao Subject Key ID - autoassinado]
Por que é compartilhável:
- Contém apenas informações públicas (
wms_ca.crt) - Mostra a chave pública, não a chave privada (
wms_ca.crt) - Como mostrar sua identidade para alguém - seguro compartilhar (
wms_ca.crt) - Os clientes precisam disso para verificar os certificados que você assina (
wms_ca.crt)
O que é:
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8...
...
-----END PRIVATE KEY-----
Detalhes Técnicos:
- Formato: Chave privada RSA codificada PEM (descriptografada após processamento do script)
- Tamanho da Chave: 2048 bits
- Inicialmente Criptografada: Sim, mas senha removida para Apache
- Propósito: Prova que o servidor é quem diz ser
O Processo de Remoção da Senha:
# Original: chave criptografada com senha
openssl genrsa -aes256 -passout pass:wms_server_password_2024 -out wms.key 2048
# Cria: wms.key (criptografado com senha)
# Mais tarde: remover a senha para Apache (servidores não gostam de digitar senhas)
openssl rsa -in wms.key -passin pass:wms_server_password_2024 -out wms.key.unencrypted
# Requer: wms.key (versão criptografada)
# Cria: wms.key.unencrypted (versão sem senha)
# Por que precisamos da versão criptografada: Para descriptografá-la e remover a senhaPor que manter secreto:
- Qualquer pessoa com isso pode se passar pelo seu servidor (
wms.key) - Como alguém roubando a chave da sua casa (
wms.key) - Somente seu servidor web deveria ter acesso (
wms.key)
O que é:
-----BEGIN CERTIFICATE REQUEST-----
MIICWjCCAUICAQAwFTETMBEGA1UEAwwKbXlkb21haW4uY29tMIIBIjANBgkqhkiG...
...
-----END CERTIFICATE REQUEST-----
Detalhes Técnicos:
- Formato: Solicitação de certificado PKCS#10 codificada PEM
- Contém: Chave pública + informações de identidade + extensões solicitadas
- Propósito: Pedir à CA "Por favor, me faça um certificado com estes detalhes"
O que há dentro:
Subject: C=US, ST=New York, L=New York, O=WMS Organization, CN=wms.local
Public Key: [chave pública RSA de 2048 bits]
Extensões Solicitadas:
- Subject Alternative Names: localhost, wms.local, *.wms.local, 127.0.0.1, etc.
- Key Usage: Digital Signature, Key Encipherment
- Extended Key Usage: Server Authentication
Pode deletar após usar:
- Necessário apenas durante a criação do certificado
- Como uma candidatura de emprego - não é mais necessária depois de conseguir o emprego
- Seguro deletar depois de criar wms.crt
O que é:
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJANQ8QgAf7N8pMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV...
...
-----END CERTIFICATE-----
Detalhes Técnicos:
- Formato: Certificado X.509 codificado PEM
- Validade: 1 ano (365 dias)
- Assinado por: wms_ca.crt (nossa CA)
- Propósito: Prova a identidade do servidor wms.local
Campos do Certificado:
Subject: C=US, ST=New York, L=New York, O=WMS Organization, CN=wms.local
Issuer: C=US, ST=New York, L=New York, O=WMS Root CA, CN=WMS Root CA
(Assinado pela nossa CA, não autoassinado)
Extensões Críticas:
Subject Alternative Name:
DNS:localhost
DNS:wms.local
DNS:*.wms.local
IP:127.0.0.1
IP:192.168.1.188
IP:::1
Key Usage: Digital Signature, Key Encipherment
Extended Key Usage: Server Authentication
Por que o SAN é crucial:
- Os navegadores verificam se o certificado corresponde à URL que você está visitando
- Sem o SAN apropriado, você recebe avisos de segurança assustadores
- Nosso certificado funciona com múltiplos endereços
O que é:
# Conteúdo idêntico a wms_ca.crt, apenas renomeado
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJANQ8QgAf7N8pMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV...
...
-----END CERTIFICATE-----
Por que a renomeação:
- Usuários Android esperam a extensão .pem
- Nome de arquivo descritivo ajuda durante a instalação
- Exatamente o mesmo conteúdo que wms_ca.crt
- Deixa óbvio que é para Android
O que é:
# Mesmo conteúdo que wms_ca.crt, nome de arquivo especial
# Exemplo de nome de arquivo: a1b2c3d4.0
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJANQ8QgAf7N8pMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV...
...
-----END CERTIFICATE-----
O Cálculo do Hash:
# Os certificados de sistema Android devem ser nomeados pelo hash do assunto
openssl x509 -noout -hash -in wms_ca.crt
# Saída: a1b2c3d4 (exemplo)
# Então o nome do arquivo se torna: a1b2c3d4.0Por que essa nomenclatura:
- Requisito do Android para o armazenamento do sistema
- O hash previne conflitos de nomes de arquivo
- Android reconhece automaticamente a extensão .0
- Permite busca rápida de certificados por hash
O que é:
# Certificado do servidor primeiro
-----BEGIN CERTIFICATE-----
[conteúdo de wms.crt]
-----END CERTIFICATE-----
# Depois certificado CA
-----BEGIN CERTIFICATE-----
[conteúdo de wms_ca.crt]
-----END CERTIFICATE-----
Estrutura:
Ordem da Cadeia de Certificados (importante!):
1. Certificado de Entidade Final (wms.crt) - O certificado do servidor
2. CA Intermediária (nenhuma no nosso caso)
3. Certificado CA Raiz (wms_ca.crt) - Nosso certificado CA
Por que a ordem é importante:
- Deve ir do certificado do servidor à CA raiz
- Ordem errada causa falhas de validação
- Os clientes seguem a cadeia elo por elo
O que é:
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no
[req_distinguished_name]
C = US
ST = New York
# ... mais campos
[v3_req]
keyUsage = critical,digitalSignature,keyEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
DNS.2 = wms.local
# ... mais entradasPropósito:
- Instruções para OpenSSL
- Define as extensões do certificado
- Especifica os Subject Alternative Names
- Pode ser deletado após a criação do certificado
| Formato | Extensão | O Que É | Como... |
|---|---|---|---|
| PEM | .pem, .crt, .key |
Formato de texto que você pode ler | Uma carta escrita em português |
| DER | .der, .cer |
Formato binário que os computadores adoram | Uma carta escrita em código de computador |
| P12/PFX | .p12, .pfx |
Pacote com chave + certificado | Um envelope lacrado com identidade + chave dentro |
| JKS | .jks |
Keystore Java | Uma caixa do tesouro Java |
| BKS | .bks |
Keystore Android | Uma caixa do tesouro Android |
Nossas Chaves Usam:
- Algoritmo: RSA (o mais comum e confiável)
- Tamanho da Chave: 2048 bits (muito seguro, recomendado pelos especialistas)
- Criptografia: AES-256 (proteção por senha super forte)
Por que 2048 bits? Pense nisso como uma fechadura com 2048 pinos diferentes. Para quebrá-la, alguém precisaria tentar 2^2048 combinações - isso é mais do que todos os átomos do universo!
O Windows tem diferentes "caixas do tesouro" (armazenamentos) para certificados:
- Pessoal 👤 - Seus certificados privados (como sua identidade pessoal)
- Autoridades de Certificação Raiz Confiáveis 🏛️ - Os escritórios de crachás em quem você confia
- Autoridades de Certificação Intermediárias 🏢 - Escritórios de crachás auxiliares
- Editores Confiáveis ✅ - Fabricantes de software em quem você confia
1. 📁 Encontre seu arquivo wms_ca.crt
2. 🖱️ Clique duas vezes nele
3. 🛡️ Clique em "Instalar Certificado"
4. 🏪 Escolha "Computador Local" (para todos os usuários) ou "Usuário Atual" (apenas para você)
5. 📍 Selecione "Colocar todos os certificados no armazenamento a seguir"
6. 🏛️ Navegue até "Autoridades de Certificação Raiz Confiáveis"
7. ✅ Clique em "OK" e "Concluir"
# Importar o certificado CA para o armazenamento de raiz confiável
certlm.msc /add wms_ca.crt /store "Root"
# Ou usando PowerShell
Import-Certificate -FilePath "wms_ca.crt" -CertStoreLocation Cert:\LocalMachine\RootO Que Você Precisa:
- Certificado CA Raiz - O chefe supremo (seu
wms_ca.crt) - CA Intermediária (opcional) - Gerente intermediário
- Certificado de Entidade Final - O verdadeiro trabalhador (seu
wms.crt)
1. Instalar a CA Raiz no Armazenamento de Raiz Confiável:
# Deve estar em "Autoridades de Certificação Raiz Confiáveis"
Import-Certificate -FilePath "wms_ca.crt" -CertStoreLocation Cert:\LocalMachine\Root2. Instalar o Certificado do Servidor no Armazenamento Pessoal:
# O certificado do servidor vai no armazenamento "Pessoal"
Import-Certificate -FilePath "wms.crt" -CertStoreLocation Cert:\LocalMachine\My3. Verificar a Construção da Cadeia:
# Verificar se o Windows pode construir a cadeia
Get-ChildItem Cert:\LocalMachine\My | Where-Object {$_.Subject -like "*wms.local*"}Validação da Cadeia de Certificados:
[CA Raiz] wms_ca.crt (no armazenamento de Raiz Confiável)
↓ assinado por
[Certificado do Servidor] wms.crt (no armazenamento Pessoal)
↓ usado por
[Seu Site] https://wms.local
Windows verifica:
- ✅ O certificado do servidor está assinado por uma CA confiável?
- ✅ O certificado CA está no armazenamento de Raiz Confiável?
- ✅ As datas do certificado são válidas?
- ✅ O certificado corresponde ao nome do site?
O Android tem dois níveis de armazenamento de certificados:
- Localização: Configurações > Segurança > Criptografia e Credenciais
- Propósito: Os aplicativos podem escolher confiar ou não confiar neles
- Segurança: Média (os aplicativos decidem o que fazer)
- Fácil de Instalar: Sim! ✅
- Localização:
/system/etc/security/cacerts/ - Propósito: TODOS os aplicativos automaticamente confiam neles
- Segurança: Alta (confiança automática para tudo)
- Fácil de Instalar: Não, necessita acesso root 🔴
1. 📂 Copie android_ca_system.pem para seu telefone
2. 📱 Vá em Configurações > Segurança > Criptografia e Credenciais
3. 📥 Toque em "Instalar do armazenamento" ou "Instalar certificado"
4. 📁 Encontre e selecione android_ca_system.pem
5. 🏷️ Dê um nome como "WMS CA"
6. 🔒 Escolha "Certificado CA" quando perguntado
7. ✅ Digite seu bloqueio de tela (PIN/senha/padrão)
Mudanças de Segurança Android 7+:
- Aplicativos que visam API 24+ ignoram certificados de usuário por padrão
- Solução: O aplicativo deve explicitamente confiar em certificados de usuário
- Nosso aplicativo: Já configurado para confiar em certificados de usuário! ✅
O Que o Android Precisa:
- CA Raiz no armazenamento de certificados (usuário ou sistema)
- Cadeia de certificados completa na resposta do servidor
- Extensões de certificado apropriadas (Crítico!)
- Correspondência de nome de host válida
O Certificado CA Raiz Deve Ter:
Basic Constraints: CA:TRUE (Critical)
Key Usage: Certificate Sign, CRL Sign
O Certificado do Servidor Deve Ter:
Basic Constraints: CA:FALSE
Key Usage: Digital Signature, Key Encipherment
Extended Key Usage: Server Authentication
Subject Alternative Name: Nomes DNS e IPs
Processo de Validação do Android:
1. 📱 O aplicativo se conecta a https://wms.local
2. 🔍 O servidor envia a cadeia de certificados: [wms.crt + wms_ca.crt]
3. 🔎 Android verifica: wms_ca.crt está no meu armazenamento de confiança?
4. ✅ Encontrado no armazenamento de usuário? Verificar se o app confia em certs de usuário
5. ✅ Encontrado no armazenamento de sistema? Confiança automática
6. 🏷️ Verificar: wms.crt corresponde ao nome do host "wms.local"?
7. 📅 Verificar: Os certificados ainda são válidos (não expirados)?
8. 🔐 Verificar: Todas as extensões requeridas estão presentes?
9. ✅ Tudo certo? Conexão permitida!
Problema: "A cadeia de certificados não pôde ser construída" Solução: Instalar o certificado CA no armazenamento de Raiz Confiável, não no armazenamento Pessoal
Problema: "Incompatibilidade de nome do certificado" Solução: Adicionar o nome do seu servidor aos Subject Alternative Names (SAN)
Problema: "Certificado expirado" Solução: Verificar a data/hora do sistema e as datas de validade do certificado
Problema: "Certificado não confiável" Solução: Instalar o certificado CA corretamente e garantir que o aplicativo confia em certificados de usuário
Problema: "Falha na verificação do nome do host" Solução: Garantir que o SAN do certificado inclui o IP/nome do host do seu servidor
Problema: "Aplicativo ignora certificados de usuário" Solução: O aplicativo deve ser configurado para confiar em certificados de usuário (o nosso é!)
- Certificados = Crachás de identificação digitais que provam a identidade
- Autoridade Certificadora = Escritório de crachás de identificação confiável que assina certificados
- Chave Privada = Chave secreta que somente você possui
- Certificado Público = Crachá de identificação que todos podem ver
- Cadeia de Certificados = Cadeia de confiança da CA raiz ao seu certificado
- wms_ca.key - Chave mestra secreta (mantenha MUITO segura!)
- wms_ca.crt - Certificado mestre público (compartilhe com os clientes)
- wms.key - Chave secreta do servidor (mantenha segura!)
- wms.crt - Certificado público do servidor (Apache usa isso)
- android_ca_system.pem - Certificado CA compatível com Android
- [hash].0 - Certificado Android nível de sistema
- wms_chain.crt - Cadeia de certificados completa
- Mantenha as chaves privadas (arquivos .key) secretas - Nunca as compartilhe!
- Use senhas fortes - Nosso script usa bons padrões
- Renovação regular dos certificados - Substitua antes da expiração
- Armazenamento apropriado dos certificados - O armazenamento certo para o propósito certo
- Verifique as cadeias de certificados - Teste que a confiança funciona
- Execute o script de certificados
- Instale o certificado CA nos seus dispositivos
- Configure o Apache para usar o certificado do servidor
- Teste as conexões HTTPS
- Monitore as datas de expiração dos certificados
Lembre-se: Certificados são como crachás de identificação para o mundo digital. Assim como você não confiaria em alguém sem identificação apropriada na vida real, os computadores usam certificados para verificar com quem estão falando online! 🌐🔒
- OpenSSL: Criação e gerenciamento de certificados
- certmgr.msc: Gerenciador de certificados do Windows
- certlm.msc: Gerenciador de certificados do computador local
- keytool: Ferramenta de certificados Java/Android
- ADB: Depuração Android e instalação de certificados
- Documentação OpenSSL
- Configuração de Segurança de Rede Android
- Armazenamento de Certificados Windows
Agora você entende certificados como um profissional! 🎉