Maison> développement back-end> Golang> le corps du texte

certificat d'installation golang

PHPz
Libérer: 2023-05-22 16:38:07
original
884 Les gens l'ont consulté

Lorsque vous utilisez Golang pour effectuer des requêtes HTTPS, vous devez installer un certificat SSL. Sinon, une erreur similaire à la suivante se produira :

x509: certificate signed by unknown authority
Copier après la connexion

Dans Golang, le package net/http de la bibliothèque standard est utilisé pour effectuer des requêtes HTTP(S). Le comportement par défaut de ce package consiste à vérifier le certificat du serveur. Si le certificat du serveur ne figure pas dans la liste des certificats de confiance intégrés de Golang, Golang signalera l'erreur ci-dessus.

Pour résoudre ce problème, nous devons installer le certificat du serveur.

1. Téléchargez le certificat

Utilisez la commande openssl pour télécharger le certificat depuis le serveur distant, comme suit :

openssl s_client -connect example.com:443 < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > example.com.crt
Copier après la connexion

Parmi eux, exemple .com est le certificat qui doit être téléchargé. Cette commande téléchargera le certificat depuis le port 443 de example.com et le stockera sous forme de fichier example.com.crt.

2. Installez le certificat

Ajoutez le certificat téléchargé à la liste des certificats de confiance de Golang Il existe deux méthodes :

2.1 Méthode 1 : Ajouter à. le magasin de certificats système

Ajoutez le certificat au magasin de certificats système et laissez Golang le reconnaître automatiquement.

En prenant Ubuntu comme exemple, copiez le certificat dans l'emplacement de stockage de l'autorité de certification du système :

sudo cp example.com.crt /usr/local/share/ca-certificates/
Copier après la connexion

Puis mettez à jour le certificat :

sudo update-ca-certificates
Copier après la connexion

2.2 Méthode 2 : Ajoutez manuellement le certificat au magasin de certificats intégré de Golang

Ajoutez le certificat au pool de certificats racine du magasin de certificats intégré de Golang, ce qui peut être réalisé des manières suivantes.

package main import ( "crypto/tls" "crypto/x509" "io/ioutil" "fmt" "net/http" ) func main() { // 从文件载入证书 cert, err := ioutil.ReadFile("example.com.crt") if err != nil { fmt.Println(err) return } pool := x509.NewCertPool() // 将证书添加到根证书池中 if ok := pool.AppendCertsFromPEM(cert); !ok { fmt.Println("Failed to parse root certificate") return } tr := &http.Transport{ TLSClientConfig: &tls.Config{ RootCAs: pool, }, } client := &http.Client{Transport: tr} _, err = client.Get("https://example.com") if err != nil { fmt.Println(err) return } fmt.Println("Success") }
Copier après la connexion

Ce programme charge le fichier example.com.crt et l'ajoute au pool de certificats racine. Ce certificat est ensuite utilisé pour accéder au site example.com. Si le certificat est chargé avec succès, « Succès » est affiché.

3. Vérifiez si le certificat est installé avec succès

Exécutez le code suivant :

package main import ( "crypto/tls" "fmt" "net/http" ) func main() { resp, err := http.Get("https://example.com") if err != nil { fmt.Println(err) return } defer resp.Body.Close() fmt.Println(resp.Status) }
Copier après la connexion

Si le code d'état de retour est 200, cela signifie que le certificat a été installé avec succès. Sinon, d'autres problèmes tels que les certificats ou le réseau doivent être vérifiés.

Ce qui précède explique comment installer le certificat SSL dans Golang. Dans le travail réel, la méthode 1 est plus courante, car il existe généralement un administrateur système responsable de la maintenance de la base de données des certificats système. La deuxième méthode convient à certaines situations particulières.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!