2010-08-13 3 views
8

Je suis aux prises avec un problème SSL depuis plus d'un mois.Client SSL avec CA auto-signé ne fonctionnant pas

Nous avons utilisé openssl pour générer nos propres certificats CA, serveur et client. Nous avons aussi enable « SSLRequire » sur le serveur Web Apache (en htaccess cela peut se tromper), ce qui signifie que toute personne essayant de se connecter via https sur le serveur doit présenter un certificat valide

L'étape sont les suivants ;

  • générer le CA clé
  • générer la CSR CA
  • signe la RSE CA avec le CA Key

donc nous avons notre propre CA qui est utilisé pour signer nos certificats de serveur et client .

prochaine étape

  • générons serveur de clés RSE du serveur générer
  • signe CSR serveur avec CA Key

Nous avons donc notre clé privée de serveur de certificats de serveur & que nous avons installé avec succès sur le serveur

Suivante nous

  • client clé
  • générer
  • générer la RSE client
  • signe CSR client avec CA Key

Nous distribuons ensuite le certificat client à nos utilisateurs en même temps que le certificat CA. Les deux ont été installés dans leurs navigateurs.

Lors de la tentative de connexion, nous avons obtenu le message "Le pair n'identifie pas et ne fait pas confiance à l'autorité de certification qui a émis votre certificat." "erreur.

Nous avons identifié le problème étant que le certificat CA auto-signé n'a pas été installé sur le serveur. Normalement, le serveur présentera une liste d'AC de confiance à l'appareil essayant de s'y connecter et l'appareil devra envoyer un certificat qui a été signé par l'un des CA que le serveur a présenté. Mais puisque notre certificat CA auto-signé n'a pas été installé sur le serveur, le navigateur pourrait présenter un certificat qui serait acceptable par le serveur .

Nous avons donc installé le certificat CA sur le serveur - panneau de configuration Hsphere.

Nous avons pris le contenu du certificat ca et copié dans le textarea « Fichier autorité de certification » sur le serveur et le serveur ne l'accepteraient pas se plaindre à chaque fois « Impossible de mettre à jour la clé Different SSL Config et le certificat »

Le certificat d'autorité de certification a été signé par lui-même. Par conséquent, comment le serveur peut-il indiquer que le certificat et la clé sont différents?

Nous avons également essayé de copier le contenu du fichier de certificat CA et du fichier de clé CA dans la zone de texte "Certificate Authority File", mais cela ne fonctionnerait pas non plus.

Comme je l'ai dit, nous avons eu des difficultés avec cela pendant plus d'un mois. Si quelqu'un peut aider, ce serait vraiment apprécié. Si nous devons payer pour le service s'il vous plaît laissez-nous savoir.

Merci d'avance.

+0

Vous pouvez essayer serverfault.com, plus susceptible de trouver des admins qui ont utilisé hsphere. – sarnold

Répondre

13

(Peut-être https://serverfault.com/ serait un meilleur endroit pour cette question.)

Voici quelques options que vous pouvez utiliser dans la configuration Apache (je ne sais pas comment cela est mis en correspondance avec votre panneau de configuration).

SSLCertificateFile  /etc/ssl/certs/host.pem 
SSLCertificateKeyFile /etc/ssl/private/host.key 
SSLCACertificatePath /etc/ssl/certs/trusteddir 
#SSLCACertificateFile /etc/ssl/certs/trustedcert.pem 
#SSLCADNRequestFile  /etc/ssl/certs/advertisedcas.pem 

SSLCertificateFile et SSLCertificateKeyFile sont les exigences de base pour activer le protocole SSL sur votre serveur. Etant donné que vous souhaitez une authentification client-certificat, vous devez configurer l'un des SSLCACertificatePath (pour un répertoire) ou SSLCACertificateFile (pour un fichier) pour indiquer les autorités de certification que vous souhaitez approuver, ajoutez-y votre certificat CA. Ceux-ci devraient être des fichiers au format PEM. Tout certificat y sera considéré comme étant de confiance (bien qu'il puisse avoir besoin de la contrainte de base de l'AC, je ne m'en souviens pas, c'est assez standard si vous avez généré un certificat d'AC racine de toute façon).

En plus de cela, vous pouvez mettre des certificats dans un SSLCADNRequestFile. Cela ne devrait pas être nécessaire, car il est rempli automatiquement à partir des directives de certificat SSLCACertificatePath ou SSLCACertificateFile, mais si vous souhaitez plus de contrôle sur la liste des autorités de certification que le serveur publie, il peut accepter, c'est là qu'il faut le faire. Juste pour clarifier, ce n'est pas ce qui gère la confiance dans les certificats clients, mais juste ce que le serveur annonce il peut faire confiance, donc vous avez toujours besoin SSLCACertificatePath ou SSLCACertificateFile. Peut-être vous option "Certificate Authority File" dans votre panneau de configuration contrôle cela et pas l'une des deux autres options.

Une façon de déboguer est de faire une ligne de commande:

echo | openssl s_client -showcerts -connect www.your.host.example:443 

Cela devrait énumérer la chaîne de certificats que vous présentez d'abord (il serait bon pour elle de présenter toute la chaîne jusqu'à la CA , car certains clients semblent en avoir besoin parfois, autant que je m'en souvienne). Ensuite, il doit répertorier les autorités de certification qu'il est prêt à accepter pour l'authentification du certificat client ou Aucun certificat CA client n'a envoyé les noms (dans ce cas, il existe un problème avec l'une des directives mentionnées ci-dessus). Cela vous donnera au moins une indication sur la configuration de SSLCADNRequestFile ou SSLCACertificatePath/SSLCACertificateFile (bien que ce soit les deux derniers qui comptent).

+1

Dommage Je n'ai que +1 à donner: spécifier les contraintes de base PEM, CA, clarifier serveur-confiance vs client-confiance et openssl s_client -showcerts, chacun mérite son propre point. – sarnold

Questions connexes