Maison  >  Article  >  développement back-end  >  Comment définir https dans Golang

Comment définir https dans Golang

PHPz
PHPzoriginal
2023-04-06 08:59:022288parcourir

Avec le développement d'Internet, HTTPS est devenu un élément important des applications Web modernes. Il peut non seulement garantir la transmission sécurisée des données, mais également améliorer la sécurité et la fiabilité des pages Web, ce qui est très important pour toute application Web. Golang est un langage de programmation devenu très populaire ces dernières années et sa bibliothèque réseau intégrée peut facilement prendre en charge HTTPS.

Alors, comment configurer HTTPS dans Golang ?

1. Générer un certificat et une clé

Tout d'abord, nous devons générer un certificat SSL et des fichiers de clé. Vous pouvez utiliser l'outil OpenSSL pour le générer. La commande spécifique est la suivante :

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

Cette commande générera un RSA d'une durée de validité de 365 jours Certificat de type de chiffrement et fichiers de clé privée key.pem et cert.pem.

2. Écrivez du code

Dans Golang, la configuration de HTTPS à l'aide de TLS (Transport Layer Security) est très simple. Voici un exemple de code, comprenant le serveur et le client :

package main

import (
  "fmt"
  "log"
  "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello, HTTPS!")
}

func main() {
    http.HandleFunc("/", handler)

    server := &http.Server{
        Addr: ":8080",
    }

    err := server.ListenAndServeTLS("cert.pem", "key.pem")
    if err != nil {
        log.Fatal("ListenAndServeTLS: ", err)
    }
}

Dans cet exemple de code, nous définissons d'abord un processeur HTTP pour gérer les requêtes HTTP. Ensuite, nous définissons un serveur HTTP et son adresse d'écoute. En définissant le premier paramètre de la méthode ListenAndServeTLS() sur le chemin du fichier de certificat et le deuxième paramètre sur le chemin du fichier de clé, nous indiquons à Golang que nous souhaitons écouter les connexions HTTPS au lieu des connexions HTTP.

Pour les connexions clients, il vous suffit de préciser l'URL commençant par https:// :

package main

import (
  "fmt"
  "log"
  "net/http"
)

func main() {
    response, err := http.Get("https://localhost:8080/")
    if err != nil {
        log.Fatal("Get: ", err)
    }

    defer response.Body.Close()

    body, err := ioutil.ReadAll(response.Body)
    if err != nil {
        log.Fatal("ReadAll: ", err)
    }

    fmt.Println(string(body))
}

Dans cet exemple de code, nous utilisons la méthode http.Get() pour obtenir le contenu de http://localhost:8080/ Depuis, nous avons configuré le certificat SSL et la clé et obtenons réellement le contenu de https://localhost:8080/.

3. Notes

Lorsque vous utilisez Golang pour configurer HTTPS, vous devez faire attention aux points suivants :

  1. Lors de la génération de certificats et de clés, vous devez vous assurer que le nom de domaine du certificat est cohérent avec le domaine. nom du serveur (ou du client), sinon la négociation SSL/TLS échouera
  2. Si vous utilisez un certificat auto-signé, le client doit installer le certificat et l'ajouter à la liste de confiance ; Sinon, le client recevra une erreur de certificat non fiable ;
  3. Pour mieux protéger la sécurité des données, nous vous recommandons d'utiliser les versions modernes du protocole TLS (telles que TLS 1.3) et de désactiver les anciennes versions du protocole de sécurité (telles que SSLv3).

Résumé

Grâce à l'introduction de cet article, je pense que vous comprenez déjà comment configurer HTTPS dans Golang. Lorsque nous devons envoyer des données vers l’extérieur, la confidentialité et l’intégrité des données sont très importantes, et HTTPS est la technologie qui peut garantir ces deux aspects. Par conséquent, que vous créiez une application Web ou développiez des connexions réseau, la configuration de HTTPS avec Golang est un choix judicieux.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn