Apache httpd: Comment faire confiance spécifiques des certificats client?
Comment puis-je configurer le serveur Apache httpd pour la confiance spécifiques des certificats client?
Nous avons besoin de restreindre l'accès à un service spécifique (connu) partenaire serveurs.
Nous avons prévu d'utiliser une autorité de certification à base de solution pour cela (une autorité de certification de confiance qui serait le seul signe de confiance aux Conseillers que nous avons accepté); cependant, notre société CA ne va pas créer des Certificats pour des entreprises extérieures.
Afin d'établir la connexion sécurisée de toute façon, jusqu'à ce que le PKI est prêt, nous avons voulu configurer client spécifique certificats de confiance sur notre mandataire Apache httpd.
Mais httpd n'accepte pas les connexions par les clients qui tentent de se connecter en utilisant le certificat du client, qui a été ajouté à la CACertificateFile (concaténés certificats x509 encodés en Base64 et de format DER(PEM)), configuré pour l'hôte virtuel.
Le certificat client est dans ce cas pas d'un certificat auto-signé.
OriginalL'auteur Binary42 | 2012-11-14
Vous devez vous connecter pour publier un commentaire.
Vous devez configurer les certificats d'autorité de certification de confiance via
SSLCACertificateFile
ouSSLCACertificatePath
et l'utilisationSSLVerifyClient
(optional
ourequired
, pasoptional_no_ca
, qui n'effectue pas d'authentification) pour que le serveur demande un certificat client.Si vous utilisez
SSLVerifyClient
directement au sein de votreVirtualHost
l'article, le certificat du client sera envoyé lors de la première poignée de main. Si vous le mettez dans unDirectory
/.htaccess
, le certificat du client sera négocié de nouveau.C'est plus facile à déboguer, lorsque le certificat est envoyé dans la première poignée de main, puisque le certificat du client lui-même ne sont pas chiffrés. Vous devriez être capable de le voir en regardant le trafic avec Wireshark (dans le
Certificate
message envoyé par le client). Lors du débogage, il vaut la peine de vérifier qu'unCertificate Request
message est envoyé par le serveur, et en regardant sa liste des autorités de certification.Une cause typique de problème serait un client qui ne veut pas reconnaître cette liste ou d'un client qui n'envoie pas son intermédiaire certificats d'autorité de certification de sa chaîne, si nécessaire.
Ensuite, si vous voulez autoriser certains certificats plus précisément, vous pouvez vérifier variable SSL variables (par exemple,
SSL_CLIENT_S_DN_*
) et de l'utiliser dans unSSLRequire
directive (voir exemple).Ou, est-il variable pour obtenir le certificat de la clé publique? Je n'ai pas trouvé non plus.
Comment voulez-vous mettre certificat du client (ce qui est à venir via SSL handshake ) dans un répertoire comme
.htaccess
?OriginalL'auteur Bruno