Eu tenho um certificado autoassinado no terminal de minha API. Estou tentando testar algumas coisas usando o simulador, mas estou recebendo "certificado de servidor não confiável".
Tentei usar o safari no simulador para baixar o arquivo .crt, mas não parece funcionar.
De onde o iPhone Simulator consegue suas chaves? Como posso adicionar um certificado confiável para que meu aplicativo funcione?
ATUALIZAR
Comecei a trabalhar criando uma CA e, em seguida, adicionando um certificado CA usando a ferramenta de provisionamento do iPhone. Então, consegui ter um certificado assinado por esse certificado CA no servidor API e o NSConnection funcionou. Não consegui fazê-lo funcionar usando um certificado autoassinado por algum motivo. Preciso tentar novamente usando o software de provisionamento.
Minha verdadeira pergunta é como faço para que isso funcione no simulador? Eu acho que o simulador usa o chaveiro do computador real.
Respostas:
Apenas para informação, se alguém ainda tiver esse problema:
simplesmente arraste e solte seus arquivos .cer na janela do Simulador em execução. Você verá o Safari piscando e a caixa de diálogo de importação do seu certificado (ou autoridade de certificação) ...
Trabalhando para iOS 7 Simulator (e acho que funcionou para iOS 6 também).
fonte
Para quem acha que arrastar e soltar o certificado no Simulador não está funcionando, houve uma alteração recente que adiciona uma etapa extra .
O Simulador deve ser informado explicitamente para confiar na CA raiz. Faça isso indo para:
Veja a resposta completa aqui :
fonte
Certificate Trust Settings
? Meu perfil é adicionado e inclui um certificado - este foi apenas trabalhar menos de um mês atrás. Reinicialize meus caches de simulador, agora o certificado foi adicionado, mas nenhuma opção para confiar totalmente nele.basicConstraints = CA:TRUE
ao gerar o certificado usando o openssl. Caso contrário, ele não aparecerá para ser confiável.Eu tive esse mesmo problema por meses e hoje eu FINALMENTE resolvi com:
ADVTrustStore
Você vai querer usar um projeto chamado ADVTrustStore do github. Ele faz uma mágica extravagante, mas instalará corretamente os certificados em seu armazenamento de confiança raiz no simulador.
Etapas para instalar um certificado personalizado
# Clone the repo git clone https://github.com/ADVTOOLS/ADVTrustStore.git # Enter the repo directory cd ADVTrustStore/ # Copy your .crt file cp somewhere/something.crt my.crt # conver to a .pem file openssl x509 -in my.crt -out my.pem -outform PEM # Install the pem in the simulators ./iosCertTrustManager.py -a my.pem
Usando esse processo, consegui fazer com que as imagens do GoogleStreetView fossem renderizadas corretamente enquanto estava atrás de um firewall corporativo usando SSL resignado com certificados autoassinados
fundo
Eu estava usando CharlesProxy e notei que ele estava instalando corretamente os certificados no Simulador, mas eles não apareceram na seção Configurações - Perfis . Então, depois de algumas pesquisas, descobri essa ferramenta. Provavelmente, existem algumas outras ferramentas por aí, mas no meu caso o arrastar e soltar nunca funcionou corretamente em todos os casos. Safari seria bom, mas não meus aplicativos.
fonte
Dê uma olhada no script de shell que Charles usa para instalar seu certificado autoassinado nas chaves do simulador. http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/
Veja também:
Parece que a instalação de seu próprio certificado no simulador pode exigir a instalação em um dispositivo via Safari e, em seguida, a cópia da linha resultante do dispositivo
TrustStore.sqlite3
para o do simulador.fonte
Para qualquer pessoa que use o OS X Catalina, verifique: https://forums.developer.apple.com/thread/124056 .
Catalina está atualmente bloqueando o acesso à pasta Desktop, Documentos e Downloads. Mudei os arquivos de certificado para a pasta compartilhada e arrasto e solto os arquivos para o simulador de lá.
fonte
Usando o iPhone Backup Extractor , copiei meu iPhone
TrustStore.sqlite3
para o~/Library/Application Support/iPhone Simulator/6.0/Library/Keychains
, sobrescrevendo o arquivo existente. Tentei inserir apenas uma única linha com o sqlite a seguir, mas não consegui fazer funcionar.sqlite3 ~/backup/iOS\ Files/TrustStore.sqlite3 sqlite3>.mode insert sqlite3>.output working.sql sqlite3>select * from tsettings; sqlite3>.quit
Agora,
working.sql
tem todo o conteúdo da tabela tsettings (no meu caso, 1 linha).sqlite3 ~/Library/Application\ Support/iPhone\ Simulator/6.0/Library/Keychains/TrustStore.sqlite3 sqlite3>INSERT INTO tsettings VALUES(X'... sqlite3>.quit
Novamente, os comandos sqlite acima não funcionaram para mim, mas podem ser um bom ponto de partida para outra pessoa. Copiar todo
TrustStore.sqlite3
o backup para o simulador funcionou perfeitamente.fonte
Dê uma olhada na
iostrust
joia do Ruby: http://github.com/yageek/iostrustfonte