SSL / TLS Authentification du certificat client à l'aide de règles RewriteCond et Rewrite Pour la redirection perceptuelle du trafic non autorisé

En fin de compte, j'écris ici parce que je suis mal à lutter avec apache, SSL / TLS et authentification d'un certificat client qui doit utiliser le numéro de série de certificat pour limiter l'accès à un appel spécifique API.

Il vaut mieux clarifier certains détails:

L'utilisateur doit avoir accès:

https: // {host} / apiv3xx / s? test

sans aucun problème et restrictions, mais pour le prochain URL:

https: // {héberger} / apiv3xx / x? action = login & user = blablabla

Pour apporter un appel, un certificat client est requis. Je pensais mettre en œuvre la décision suivante:

<location apiv3xx="">
SetEnv api 1
SSLOptions +StdEnvVars -ExportCertData
SSLVerifyClient optional
SSLVerifyDepth 10
</location>

Et, de plus, certaines règles de gestion de la logique:

RewriteCond %{REQUEST_URI} ^/apiv3xx/ [NC]
RewriteCond %{QUERY_STRING} action=log([^&]*)?(?=&|$) [NC,OR]
RewriteCond %{QUERY_STRING} action=adm([^&]*)?(?=&|$) [NC,OR]
RewriteCond %{QUERY_STRING} action=ctc([^&]*)?(?=&|$) [NC]
RewriteCond %{SSL:SSL_CLIENT_M_SERIAL} !(01000000000140AAD72ACCXXXXXX|02000000000140BAD37F1XXXXXXX)
RewriteCond %{SSL:SSL_CLIENT_VERIFY} !^SUCCESS$
RewriteRule (.*) - [F,L]

alors ... Mon problème est maintenant simple: je n'ai pas de numéro de série de la demande et, selon la logique, les conditions ne sont pas effectuées.

J'ai erré plusieurs jours sur Internet à la recherche de la solution et n'a trouvé que cet ancien
http://www.askapache.com/htacc ... ation
(À partir de laquelle je déduisez finalement ma décision), Mais cela semble inutile.
Invité:

Babette

Confirmation de:

Notez la session SSL par WireShark, Ensuite, vérifiez le protocole SSL ALERT. Cela vous aidera à comprendre les négociations. Activer le débogage SSL sur le serveur apache. Assurez-vous que le serveur Apache Demandes du client à renégier de la session et que le client envoie le certificat. Si nécessaire, vous pouvez également déchiffrer la session si vous avez une clé RSA et certificat de serveur.

Aussi sur le client, vous devez créer un serveur de confiance. Sinon, le client n'enverra pas de certificat.

Notez également que le protocole SSL / TLS Il a été changé en raison d'une erreur de recordination. Les clients et les serveurs utilisant différentes versions du protocole sont incompatibles. Voir:
http://cve.mitre.org/cgi-bin/c ... -3555
Vous devrez peut-être inclure:

SSLOptions +OptRenegotiate

Pour répondre aux questions, connectez-vous ou registre