Pergunta

Eu tenho experimentado o OpenID e configurei uma página de amostra para acessar usando minha conta OpenID. Estou usando o Biblioteca Php OpenID por Janrain E não estava funcionando com minha conta do Google. Uma pequena pesquisa me levou a essa questão, o que sugere o problema é que o Google usa https e...

... É provável que a configuração para fazer solicitações HTTPS esteja presa no seu servidor PHP. Verifique se você tem o pacote de certificados CA instalado.

No mesmo tópico, alguém se vincula ao seu versão hackeada da biblioteca que eu implantei e usei com minha conta do Google com sucesso. Outras perguntas têm outras personalizações para contornar problemas semelhantes (PHP-Openid e Google/Yahoo de Janrain, PHP-Openid não funciona com o Yahoo!, Exemplo de uso do AX no PHP OpenID...)

Não estou muito quente em segurança, então pergunto; Alguém conhece um motivo para não usar essas versões hackeadas?

A biblioteca original tem qualquer falha que esses hacks corrigem por design e, portanto, o hack é uma potencial vulnerabilidade de segurança?

Existe um cripto-ifé qualificado por aí que analisou qualquer uma dessas soluções e foi "por barba de David Chaum! NÃO!!"

Nesse caso - e, portanto, não devo usar nenhum desses hacks - como verificaria que "tenho o pacote de certificados da CA instalado"?

Foi útil?

Solução

Aqui está o que o autor de uma dessas versões "hackeadas" escreveu:

Em particular, curlopt_sssl_verifypeer e curlopt_sssl_verifyhost são verdadeiros por padrão: eu os defina como false e funcionou para a página de teste!

O efeito que tem é negar praticamente qualquer vantagem de segurança oferecida usando o HTTPS. A principal razão pela qual os HTTPs são úteis no OpenID é que ele guarda contra um ataque de homem no meio, ou seja, alguns bandidos envenenam seu cache de DNS para enviar tudo google.com pedidos para bad-guys.example. Com HTTPs configurados corretamente, você verificaria o certificado na conexão, descobriria que não era do Google e dizia "Não vou acreditar em nada que você diga, bad-guys!"

A menos que, é claro, você não verifique nenhum certificado (você define todos os SSL_VERIFY opções para false), nesse caso, seu servidor acreditará em tudo bad-guys diz como se fosse o verdadeiro provedor do Google. Você pode imaginar como isso pode ser ruim.

Agora, francamente, este não é o pior Escolha que você poderia fazer, porque não é pior do que apenas usar o HTTP, o que muitas pessoas fazem de qualquer maneira. Você é apenas mentindo para seus usuários Se você sugere que está fornecendo segurança no nível HTTPS quando não estiver.

E há muitas informações por aí sobre como é fácil ou não fazer um ataque baseado em DNS, ou como é fácil Forge Certificados SSL. De qualquer maneira, exige que alguém atace a conexão entre o seu servidor e o Google, que é geralmente Mais difícil do que atacar a conexão entre o laptop do usuário na cafeteria e seu servidor.

Mas ainda assim, muito melhor para realmente corrigir sua configuração PHP ou CURL SSL. Ou, se não o fizer, avise seus usuários disso quando se inscrevem com os identificadores HTTPS, para que eles possam escolher se realmente querem usar esse OpenID com seu site.

O que leva à sua segunda pergunta. Eu acho que, sem saber nada sobre qual plataforma de servidor que você está usando, a melhor coisa que posso fazer é vinculá -lo ao Curl Docs em certificados SSL; Veja a seção que diz "Obtenha um pacote CA Cert CA MELHOR/DIFERENTE/mais recente!"

Outras dicas

Do artigo da Wikipedia sobre Autoridade de certificado:

Uma CA emite certificados digitais que contêm uma chave pública e a identidade do proprietário. Quando um usuário final tenta acessar um URL desconhecido, o navegador da web (por exemplo, Mozilla Firefox e Microsoft Internet Explorer) entrará em contato com a CA para confirmar a chave pública do URL.

... então o certificado da CA é um Certificado de chave pública usado para se comunicar https://. Seu servidor deve ter certificados de CA no sistema de arquivos em algum lugar. Caso contrário, você terá que baixar o certificado da CA e definir o CURLOPT_CAINFO constante para apontar para sua localização. Veja este artigo.

http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-sltls-protected-sites/

...] Alguém conhece um motivo para não usar essas versões hackeadas?

Além do fato de serem versões invadidas, que provavelmente não são documentadas e não têm garantia de seu comportamento?

Não posso responder especificamente, mas deve haver algumas luzes de aviso piscando quando você trabalha com módulos que tiveram correções rápidas e soluções alternativas aplicadas, especialmente quando você está lidando com autorização e segurança. Acho que o melhor conselho seria " Use por risco! "

Tenho certeza de que alguém com mais conhecimento sobre o tópico chegará em breve com uma resposta mais informada.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top