Question

Je veux faire ce myopenid n' -- une fois que vous avez enregistré, vous pouvez cliquer sur un bouton qui vous génère un certificat SSL;le navigateur télécharge ce certificat et le stocke.Lorsque, plus tard, vous revenez à yourid.myopenid.com, votre navigateur peut utiliser son certificat stocké pour l'authentification de sorte que vous n'avez pas besoin d'un mot de passe.

Donc mes questions est ce qui est nécessaire pour obtenir ce travail?Comment puis-je générer les certificats?Comment puis-je valider une fois qu'ils sont présentés de nouveau à moi?

Mon stack est de Rails sur un serveur Apache à l'aide de Passager, mais je ne suis pas trop particulier.

Était-ce utile?

La solution

Ces sont généralement considérés comme les certificats côté client.

Je n'ai pas réellement utilisé, mais une version modifiée de réparateur d'authentification peuvent être trouvés ici ici qui ressemble à ce que votre après.

J'ai trouvé ce via DrNic post

Autres conseils

Dépend du serveur, mais la solution la plus simple que je connais, à l'aide d'Apache:

FakeBasicAuth

"Lorsque cette option est activée, l'Objet de Nom unique (DN) de la Client Certificat X509 est traduit en un HTTP Autorisation de Base nom d'utilisateur.Cela signifie que la norme Apache méthodes d'authentification peut être utilisé pour le contrôle d'accès.Le nom d'utilisateur est tout simplement le Sujet du Certificat X509 du Client (peut être déterminé en utilisant la commande OpenSSL OpenSSL x509:openssl x509 -noout -soumis certificat.crt).Notez qu'aucun mot de passe est obtenu à partir de l'utilisateur..."

Pas sûr au sujet de rails, mais l'habitude variable d'environnement REMOTE_USER devrait être accessible d'une certaine façon.

Si vous voulez générer des certificats, vous devez faire en sorte que le client pour générer une paire de clés, et vous envoyer au moins la clé publique.Vous pouvez le faire dans Firefox via un appel Javascript, c'est crypto.generateCRMFRequest.Je devine qu'il y a un navigateur spécifique des méthodes disponibles dans d'autres navigateurs aussi.Mais d'abord, vous devez comprendre la façon de délivrer un certificat une fois que vous obtenez une clé publique.

Vous pourriez script quelque chose sur le serveur avec OpenSSL, mais il a un support intégré pour la CSRs, pas la CRMF format Firefox va vous envoyer.Si vous avais besoin d'écrire un peu de code pour convertir le CRMF pour la RSE, qui aura besoin d'une sorte de DER capacité de traitement... je suis juste à gratter la surface—l'exploitation d'un CA, même pour un jouet application, n'est pas trivial.

SSO solutions comme OpenId et les solutions PKI ne se chevauchent, et il y a une élégance dans la PKI.Mais le diable est dans les détails, et il y a de bonnes raisons pour lesquelles cette approche a été autour depuis longtemps, mais a seulement pris de gouvernement et les applications militaires.

Si vous êtes intéressé dans la poursuite de cet, le suivi des questions spécifiques à la plate-forme, vous voulez développer votre CA service.

Vous pouvez générer un certificat dans le navigateur du client à l'aide du navigateur de code spécifiques.Voir cette question

Vous pouvez également générer client SSL cert côté serveur à l'aide d'OpenSSL en Ruby (voir ce q).(Cela fonctionne dans n'importe quel navigateur sans navigateur de code spécifiques, mais votre serveur aura généré le client de la clé privée, qui n'est pas idéal pour le cryptage des puristes.)

Quelle que soit la méthode que vous utilisez pour générer, vous devrez ensuite configurer votre serveur web pour exiger le certificat du client.Voir l'Apache docs pour un exemple.

J'ai travaillé sur une solution à ce problème.Je voulais faire la même chose et je sais que beaucoup d'autres propriétaires de site web cette fonction, avec ou sans un fournisseur tiers.

J'ai créé le nécessaire et de configuration de serveur un plugin firefox pour gérer l'authentification basée sur les certificats.Aller à mypassfree.com pour saisir le gratuit plugin firefox.M'envoyer un Email (lien sur cette page) pour la configuration de serveur que je n'ai pas emballé, mais avec un joli programme d'installation.

L'installation du serveur Apache2 + OpenSSL + Perl (mais vous pouvez réécrire les scripts perl dans toutes les langues)

Jonathan

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top