Je ne sais pas, il s’avère que Springboot intègre des https si simples!

1. Introduction

HTTP n'est pas sécurisé, nous devons mettre SSL dessus et le faire devenir HTTPS. Cet article présentera Springboot pour intégrer HTTPS avec des exemples.

2. Principes de base de la cryptographie

Si vous voulez parler de https, vous devez parler de sécurité, et bien sûr vous devez parler de sécurité; quand il s'agit de sécurité, cela impliquera inévitablement une certaine connaissance de la cryptographie.

2.1 Cryptographie

Pour établir un cryptosystème, il doit être composé de cinq espaces, à savoir:

  1. Texte brut M: informations avant le cryptage ou après le décryptage;
  2. Ciphertext C: informations chiffrées en texte clair;
  3. Clé K: se compose d'une clé de cryptage et d'une clé de décryptage;
  4. Cryptage E: Transformation du texte brut au texte chiffré;
  5. Décryptage D: transformation du texte chiffré en texte brut.

Comme le montre la figure:
Insérez la description de l'image ici
2.2 Deux méthodes de cryptage

(1) Cryptage symétrique

  • Le chiffrement symétrique, ou chiffrement à clé unique, fait référence à une méthode de chiffrement dans laquelle la clé de chiffrement et la clé de déchiffrement sont identiques (ou il est facile de calculer l'une à partir de l'autre).
  • Les principaux avantages du cryptage symétrique sont: les opérations de cryptage et de décryptage sont rapides et efficaces;
  • Limitations: distribution de clés complexe, gestion des clés difficile, faible ouverture des systèmes de communication confidentiels et signatures numériques;
  • Algorithmes représentatifs: algorithme DES, algorithme AES;

Prenons un petit exemple: le
texte en clair est 48, l'algorithme de chiffrement f (x) = 8x + 71, puis le texte chiffré C = 8 * 48 + 71 = 455, puis l'algorithme de déchiffrement est f (x) = (x-71) / 8;
puis Le texte en clair déchiffré M = (455-71) / 8 = 48;

(2) Cryptage asymétrique

  • Le cryptage asymétrique fait référence à une méthode de cryptage dans laquelle différentes clés sont utilisées pour le cryptage et le décryptage, et la clé de décryptage ne peut pas être dérivée de la clé de cryptage.
  • Principaux avantages: une distribution simple des clés, une gestion facile, une bonne ouverture du système et des signatures numériques peuvent être réalisées;
  • Limitations: faible efficacité des opérations de cryptage et de décryptage;
  • Algorithmes représentatifs: algorithme RSA, algorithme ECC;

Donnez un grand exemple:

Procédez comme suit:

Étape La description Formule Remarque
1 Trouvez deux nombres premiers P et Q
2 Calculer le module commun N = P * Q
3 Calculer la fonction d'Euler φ (N) = (P-1) (Q-1)
4 Calculer la clé publique E 1 <E <φ (N) La valeur de E doit être un entier E et φ (N) doit être un nombre relativement premier
5 Calculer la clé privée D E * D% φ (N) = 1
6 chiffrement C = M ^ E mod N C: texte chiffré M: texte clair
7 Décrypter M = C ^ D mod N C: texte chiffré M: texte clair

Parmi eux, clé publique = (E, N), clé privée = (D, N), en externe, nous exposons uniquement la clé publique.

1. Trouvez deux nombres premiers, trouvez deux nombres premiers au hasard, nous trouvons P = 5 et Q = 11.

2. Calculez le module public N = P Q = 5 11 = 55

3. Calculer la fonction d'Euler φ (N) = (P-1) (Q-1) = 4 * 10 = 40

4. Calculer la clé publique E 1 <E <φ (N), on prend E = 13

5. Calculez la clé privée D (13 * D)% 40 = 1, puis prenez D = 37

6. Chiffrement En supposant que le texte en clair à transmettre est 8, utilisez la clé publique (E, N) = (13,55) pour chiffrer par la formule C = M ^ E mod N = 8 ^ 13% 55 = 28

7. Décryptage à l'aide de la clé (D, N) = (37,55) Décryptage et décryptage M = C ^ D mod N = 28 ^ 37% 55 = 8

De plus, nous pouvons chiffrer avec la clé privée et déchiffrer avec la clé publique. Si le texte en clair est 2, utilisez la clé privée (37,55) pour chiffrer le texte chiffré C = (2 ^ 37)% 55 = 7
pour déchiffrer avec la clé publique (13,55) M = (7 ^ 13)% 55 = 2.

Jusqu'à présent, tout le processus de cryptage asymétrique a été démontré à nouveau, j'espère que tout le monde peut le comprendre, en particulier le cryptage asymétrique, car HTTPS utilise un cryptage asymétrique. L'algorithme réel utilisé est plus compliqué et la longueur de la clé sera plus grande.

2.3 Certificat

Pour utiliser SSL, un certificat est requis. Ce fichier de certificat contient la clé publique, qui est utilisée dans le chiffrement asymétrique.

Il existe deux façons d'obtenir un certificat:

Obtenu auprès de CA (autorité de certification), c'est-à-dire que le client reconnaîtra le certificat, qui a de la crédibilité; il est gratuit et facturé, et la charge est relativement stable et sûre.
Certificat auto-signé, certificat auto-fabriqué, généralement utilisé pour les tests, le navigateur ne reconnaît pas.
Pour plus de commodité, le certificat auto-signé est utilisé dans cet exemple, et il n'y a aucune différence entre les deux processus d'intégration de certificat.

3. Springboot intègre HTTPS

3.1 Laisser le Web fonctionner en premier

En tant qu'application Web, nous la laissons d'abord s'exécuter, puis intégrons https.

(1) Introduisez les dépendances Web:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>

(2) Configurez le port:

server.port=80

(3) Réalisez Contrlloer:

@RestController
public class HelloController {
    
    
    @GetMapping("/hello")
    public String hello() {
    
    
        return "Welcome to www.pkslow.com";
    }
}

Après avoir terminé le travail ci-dessus, démarrez l'application.

Visitez http: // localhost / hello pour obtenir le résultat suivant, indiquant que l'ensemble du Web est appliqué.
Insérez la description de l'image ici
3.2 Générer le fichier clé jks

Le fichier clé généré par la ligne de commande est le suivant:

keytool -genkey -alias localhost -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -keystore localhost.jks -dname CN=localhost,OU=Test,O=pkslow,L=Guangzhou,C=CN -validity 731 -storepass changeit -keypass changeit

La signification des paramètres de ligne de commande importants:

  1. alias: alias de clé, vous pouvez le démarrer à volonté, ne pas entrer en conflit;
  2. keyalg: algorithme de chiffrement;
  3. keysize: longueur de la clé, il est fondamentalement impossible de craquer d'ici 2048;
  4. keystore: le nom de fichier du keystore;
  5. dname: Ceci est très important, en particulier le nom de domaine correct après CN =;
  6. validité: la période de validité du cert;

Après avoir exécuté la commande ci-dessus, le fichier localhost.jks sera généré et le fichier peut être placé sous le chemin de classe, bien sûr, il peut également être placé à d'autres emplacements et le fichier de configuration peut être spécifié correctement.

3.3 Reconfigurer et redémarrer

Reconfigurez le fichier application.properties en fonction de la situation réelle:

server.port=443

server.ssl.enabled=true
server.ssl.key-store-type=jks
server.ssl.key-store=classpath:localhost.jks
server.ssl.key-store-password=changeit
server.ssl.key-alias=localhost

L'accès est le suivant après le redémarrage:
Insérez la description de l'image ici

Un avertissement rouge est détecté, car il s'agit d'un certificat auto-signé et non reconnu par Chrome, la vérification échouera donc. La version précédente de Chrome n'était qu'un avertissement, mais elle était toujours accessible, mais la nouvelle version n'est plus accessible.

Il est accessible via Postman:
Insérez la description de l'image ici
3.4 Utiliser le format PKS12

Si vous souhaitez utiliser PKCS12 pour remplacer JKS, la commande et la configuration peuvent faire référence à ce qui suit:

Générer la clé:

keytool -genkey -alias localhost -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -storetype PKCS12 -keystore localhost.p12 -dname CN=localhost,OU=Test,O=pkslow,L=Guangzhou,C=CN -validity 731 -storepass changeit -keypass changeit

Le fichier de configuration est le suivant:

server.port=443

server.ssl.enabled=true
server.ssl.key-store-type=PKCS12
server.ssl.key-store=classpath:localhost.p12
server.ssl.key-store-password=changeit
server.ssl.key-alias=localhost

Conclusion:

Je souhaite à tous un bon
travail.Si vous avez besoin de matériel d'apprentissage Java ou de matériel d'entretien, vous pouvez cliquer pour entrer, le code: cspp , le matériel a été trié, et vous pouvez les obtenir gratuitement!
Insérez la description de l'image ici
Insérez la description de l'image ici

Enfin, je vous souhaite bonne chance dans votre travail!

Je suppose que tu aimes

Origine blog.csdn.net/m0_45270667/article/details/109183584
conseillé
Classement