Instalação de certificado sem tela de bloqueio de PIN obrigatória

23

O Suporte do Google diz :

O tipo de bloqueio aceitável pode ser predeterminado pelo administrador do sistema.

Onde posso definir o que é aceitável? Posso regenerar o certificado, se necessário.

Para que eu possa usar a tela de bloqueio de slides novamente.

(Estou usando o CM9 RC1, Android 4.0.4)

rdlu
fonte
1
Aceitarei uma solução que instale o certificado no sistema diretamente, ignorando o requisito de pinos.
Rdlu 9/07
1
Para proteger suas credenciais, é necessário que você use um dos tipos de tela de bloqueio que possua algum tipo de código secreto (padrão, PIN ou senha). O que essa linha está dizendo é que seu administrador pode (normalmente por meio de uma política do Exchange ActiveSync) bloquear seu telefone para que apenas alguns tipos sejam aceitos, por exemplo, eles não confiam em bloqueios de padrão e podem pensar que quatro dígitos Os PINs não têm combinações suficientes. Não está dizendo que você pode desativar esse requisito de segurança.
GAThrawn
2
@ GAThrawn Acho isso inaceitável se eu apenas instalar uma CA para autenticar meus servidores Web via SSL (usando certificados autoassinados). Eu entenderia se tratasse de assinar chaves no dispositivo ou autenticar o usuário - mas ambas são o contrário. Felizmente, a solução sgiebels parece funcionar para mim, com alguns pequenos ajustes que descrevi nos comentários. Única desvantagem até agora: requer raiz.
Izzy

Respostas:

2

O problema com a desativação da segurança da tela de bloqueio usando a alternância / perfil é que os widgets da tela de bloqueio também não aparecem, então você não pode deslizar para desbloquear. Além disso, quando você reinicia o telefone, os botões não funcionam até você voltar a alterar a configuração novamente.

Outra maneira é instalar o certificado como de costume e fazer backup dos diretórios / data / misc / keychain e keystore usando algo que preserve as ACLs, como o Root Explorer, em um local que suporte ACLs. Sugiro copiá-los para / tmp. Em seguida, limpe as credenciais em Configurações e ative o Deslize para desbloquear. Em seguida, copie as pastas de / tmp. A CA será instalada.

Monstieur
fonte
Isso não funciona mais. Assim que você tenta usar o certificado em algum lugar (como na conexão a uma rede wifi), o sistema operacional exige que você defina um bloqueio na tela novamente.
Cory Klein
@CoryKlein Se você clicar em cancelar, solicitará um PIN e você poderá inserir o último que você definiu. É necessário descriptografar os dados.
Monstieur
@ Kurian - Então, segui as instruções acima e, quando tento conectar-me a uma rede wifi, diz "Você precisa definir um PIN da tela de bloqueio", clico em "Cancelar" e nada acontece. Se eu clicar em "Ok" e cancelar a partir daí, ele ainda não solicitará o PIN.
Cory Klein
@CoryKlein Eu interpretei mal o seu comentário anterior. Eu estava falando sobre VPNs. A conexão a uma VPN solicita o último PIN da tela de bloqueio para descriptografar suas credenciais. Não sei se funciona para certificados pessoais com chaves privadas. Sei que funciona para instalar certificados de CA confiáveis. Também pode ser a ROM específica que você está usando. As ROMs pré-ICS AOSP nunca precisavam de um PIN de tela de bloqueio para salvar as credenciais da VPN.
Monstieur
7

Descrevi como fazer isso exatamente na minha página, "Instalando certificados CAcert no Android como credenciais do 'sistema' sem tela de bloqueio - instruções" em http://wiki.pcprobleemloos.nl/android/cacert

Também publiquei no fórum cyanogenmod: http://forum.cyanogenmod.com/topic/82875-installing-cacert-certificates-on-android-as-system-credentials-without-lockscreen/

Basicamente, os comandos são:

openssl x509 -inform PEM -subject_hash_old -in root.crt | head -1

Para obter o nome de arquivo correto, converta o certificado:

cat root.crt > 5ed36f99.0
openssl x509 -inform PEM -text -in root.crt -out /dev/null >> 5ed36f99.0

Copie-os para / system / etc / security / cacerts / e chmod os novos arquivos .0 para '644'. Reinicie e verifique. No seu dispositivo Android, selecione 'Limpar cerficados' e você poderá remover o pino (inserindo o pino e alterando a tela de bloqueio para 'none' ou 'wipe'

Aqui eu usei o certificado raiz CAcert, mas você provavelmente também deseja o certificado class3.crt ou usa seus próprios certificados.

sgiebels
fonte
Você mencionou "certificados próprios". Eu apenas tentei isso com o meu "CA" (criado usando TinyCA), e na última etapa ( "informar") só obter um erro: 140342119224992:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:696:Expecting: TRUSTED CERTIFICATE. Verificando com Não é possível carregar o certificado no openssl , o .pemarquivo deve corresponder. Mas então, seu último comando não muda nada. Algo errado ou isso é esperado para uma CA autoassinada / criada? E antes de começar a invadir: isso deveria funcionar?
Izzy
OK, trabalhei e fui aceito com minha CA auto-criada TinyCA:, openssl x509 -inform PEM -text -fingerprint -in cacert.pem > d6a2705a.0movendo o bloco base64 para o topo usando um editor de texto, colocando o arquivo /system/etc/security/cacerts/, executando chown root:root d6a2705a.0e chmod 0644 d6a2705a.0de dentro do diretório - e pronto, ele aparece como certificado confiável do sistema . Yeehaa!
Izzy
@sgiebels Você por acaso também tem uma solução para usar credenciais (das credenciais do sistema ou outras) na conexão WLAN 802.1X? Parece que o keystore / keychain no dispositivo (/ data / misc / key ...) usa a senha para criptografia, assim: sempre que as credenciais são necessárias (conexão à WLAN), o PIN / senha é solicitado novamente e ( no meu sistema) o bloqueio está ativado novamente.
Ivin
Isso funcionou bem, exceto que também tive um problema com a formatação do certificado devido às terminações de linha dos. dos2unix irá convertê-los, em seguida, verificar se você tem o final correta na linha de certificado (a minha era assim: -----END CERTIFICATE-----Certificate:. o que causou um erro de interpretação demasiado
deed02392
4

Descobri uma solução que funciona sem software adicional ou cópia manual de arquivos:

  1. Defina sua tela de bloqueio para "padrão". Digite um padrão e um PIN de desbloqueio. Lembre-se do PIN de desbloqueio.
  2. Instale seu certificado de usuário.
  3. Desligue e ligue a tela.
  4. Digite o padrão incorretamente algumas vezes, até que o item "Esqueceu o padrão?" opção aparece.
  5. Clique em "Esqueceu o padrão?", Role para baixo, digite o PIN de desbloqueio e confirme com "OK".
  6. Feche a janela "Configurações de desbloqueio da tela" com o botão Voltar sem selecionar uma opção .

O sistema agora está definido como "Swipe unlock", mas o certificado do usuário ainda é utilizável (testado com o navegador da Web e um aplicativo personalizado usando DefaultHttpClient).

Testado em um Android 4.1.2 em um Galaxy Tab 2 10.1.

Heinzi
fonte
não funciona com o wpa-enterprise / TLS no LG G2, as ceres desapareceram depois disso #
Eugene Petrov
Este é um ótimo bug! Obrigado! (funcionou perfeitamente com o Galaxy S5, android 6)
Adiel
0
  • Você pode fazer uso dos perfis do CyanogenMod .
    (Para outros leitores: isso precisa da versão 9+ CyanogenMod Rom personalizada)

    Basta criar ou modificar um perfil existente e desativar o "bloqueio de tela" lá.

    É: Configurações do sistema-> Perfis-> Padrão-> Modo de tela de bloqueio-> Desativado

  • Integre seu certificado ao arquivo de armazenamento de chaves padrão do Android

    Veja o excelente tutorial da CAcert aqui

    No entanto, não tenho certeza se você pode fazer isso com um certificado autoassinado (talvez seja necessário mudar para uma CA auto-criada (use tinyca para uma boa ferramenta de gui no * nix)).

ce4
fonte
Isso não funciona (mais). Assim que você instala os certificados (por exemplo, os do cacert.org), essa opção / item no perfil fica acinzentado.
blueyed 04/04
-1

Encontrei uma maneira de resolver o problema, mas ele requer raiz e pode funcionar apenas com CAs raiz, autoassinadas ou intermediárias.

Se você possui um certificado que não é confiável pelo Android, quando o adiciona, ele entra na loja de certificados pessoais. Quando você adiciona um certificado a essa loja pessoal de certificados, o sistema exige um nível de segurança mais alto para desbloquear o dispositivo. Mas se você conseguir adicionar seu certificado à loja do sistema, não terá esse requisito. Obviamente, o root é necessário para adicionar um certificado ao armazenamento do sistema, mas é fácil e silencioso.

Aqui está como fazê-lo:

1 - Adicione seu certificado normalmente. Por exemplo, meu certificado foi chamado some.crt. Ele será armazenado em sua loja pessoal e o Android solicitará um PIN / senha ... Prossiga.

2 - Com um gerenciador de arquivos com recursos raiz, procure arquivos em /data/misc/keychain/cacerts-addedou /data/misc/keystore. Você deve ver um arquivo aqui chamado 1000_USRCERT_somede certificado que você adicionou na etapa 1.

3 - Mova esse arquivo para system/etc/security/cacerts (você precisará montar a partição do sistema r / w)

4 - Reinicie o telefone

5 - Agora você pode limpar o PIN / senha que definiu para desbloquear o dispositivo.

Trabalhou para mim com um certificado autoassinado no Android 4.4.2. Espero que ajude!

guttermonk
fonte
Interessante, que você não mencionou a fonte original , nem creditou o autor adequadamente. Siga Como fazer referência a material escrito por outras pessoas .
Firelord