La mise en œuvre de manière 2 SSL à l'aide de spring boot
Je suis la création de certains services web restful et je suis à l'aide de Spring-Boot pour créer un conteneur tomcat intégré.
L'une des exigences est que cela met en œuvre de manière 2 SSL. J'ai été à la recherche à la HttpSecurity objet et pouvez l'obtenir pour seulement exécuter les webservices par un canal SSL à l'aide de ceci:-
@Override
protected void configure(HttpSecurity http) throws Exception {
System.out.println("CONFIGURED");
http
//...
.requiresChannel()
.anyRequest().requiresSecure();
}
Ce que je n'arrive pas à trouver est une manière de rendre le service accessible uniquement pour les applications fournissant un client valide cert.
Je n'ai qu'une connaissance de base de SSL de telle sorte que même un général pointeur dans la bonne direction serait appréciée.
Le serveur, c'est en cours de déploiement sur aurez un mélange d'applications - c'est le seul qui doit être verrouillé avec le 2-way SSL. Ce que je suis vraiment à la recherche d'un moyen de verrouillage vers le bas une seule application pour accepter les certificats clients.
Donc sa peut-être intégré à l'conteneur tomcat à partir du Printemps de Démarrage j'ai besoin de regarder en plus.
OriginalL'auteur Andrew Mc | 2015-11-19
Vous devez vous connecter pour publier un commentaire.
Vous pouvez configurer
clientAuth=want
, voir Apache Tomcat 8 Configuration De Référence:et ensuite lire le certificat du client avec Spring Security - X. 509 De L'Authentification:
et
OriginalL'auteur dur
Je suis tombé sur un problème similaire, et j'ai pensé partager la solution je suis venu avec.
Tout d'abord, vous devez comprendre que le certificat SSL authentification seront traitées sur votre serveur web côté (cfr. dur d'explication, avec le “clientAuth=voulez”).
Ensuite, votre application web doit être configuré pour gérer la condition (et autorisé) certificat, carte à un utilisateur etc.
La légère différence que j'ai avec vous, c'est que je suis emballage de mon ressort de démarrage de l'application dans une GUERRE d'archive, qui est ensuite déployée sur un serveur d'application Tomcat.
Mon Tomcat server.xml fichier de configuration définit un connecteur HTTPS comme suit:
Petit commentaire pour éviter toute confusion: keystoreFile contient le certificat/clé privée de la paire de SSL (seulement), tandis que truststoreFile contient le permis de certificats d'autorité de certification pour le client, de l'authentification SSL (notez que vous pouvez également ajouter le certificat du client directement dans cette confiance-store).
Si vous utilisez un tomcat intégré contenant printemps de démarrage de l'application, vous devriez être en mesure de configurer ces paramètres dans votre application fichier de propriétés, en utilisant la propriété suivante clés/valeurs:
Puis, dans mon application web, je déclare un SSL configuration comme suit:
Que je puis avoir besoin de déclarer la UserDetailsService bean (par exemple, dans mon Application principale de la classe):
Et c'est tout! Je peux alors ajouter @exiger une autorisation préalable(“hasRole(‘ROLE_SSL_USER’)”) des annotations pour les méthodes que je veux sécurisé.
Pour résumer un peu les choses, le flux d'authentification sera comme suit:
OriginalL'auteur veebee