Comment configurer axios pour utiliser un certificat SSL?
Je suis en train de faire une demande avec axios à une api d'extrémité et j'obtiens l'erreur suivante: Error: unable to verify the first certificate
Il semble que le https module, qui axios utilisations, il est impossible de vérifier le certificat SSL utilisé sur le serveur.
Lors de la visite du serveur avec mon navigateur, le certificat est valide et je peux voir/télécharger. Je peux aussi faire des requêtes à l'api sur mon navigateur via le protocole https.
Je peux contourner le problème en désactivant la vérification. Ce code fonctionne.
const result = await axios.post(
`https://${url}/login`,
body,
{
httpsAgent: new https.Agent({
rejectUnauthorized: false
})
}
)
Problème est, ce n'est pas de vérifier le certificat SSL et ouvre donc des trous de sécurité.
Comment puis-je configurer axios faire confiance au certificat correctement et de le vérifier?
Vous devez vous connecter pour publier un commentaire.
Une vieille question, mais carillon pour ceux qui atterrissent ici. Pas expert. Veuillez consulter votre bureau local de la sécurité des gourous et ce n'est pas.
Axios est un http(s) du client et les clients http généralement de participer à TLS de façon anonyme. En d'autres termes, le serveur accepte de leur connexion sans identifier qui tente de se connecter. Ce qui est différent puis dire, TLS Mutuelle où à la fois le serveur et le client de vérifier les uns les autres avant de remplir la poignée de main.
L'internet est un endroit effrayant et nous voulons protéger nos clients de se connecter à l'usurpation de points de terminaison publics. Pour ce faire, nous assurer que nos clients à identifier le serveur avant d'envoyer des données à caractère privé.
C'est souvent à l'affiche (et encore plus éhontée upvoted) comme la réponse sur StackOverflow concernant https échecs de connexion de client dans n'importe quelle langue. Et ce qui est pire, c'est qu'il travaille habituellement, débloque le dev et qu'ils se déplacent sur leur petit bonhomme de chemin. Cependant, alors qu'ils sont certainement dans la porte, dont la porte est-elle? Puisqu'ils ont choisi de vérifier l'identité du serveur, leur mauvaise client n'a aucun moyen de savoir si la connexion ils ont juste fait à l'intranet de l'entreprise a de mauvais acteurs à l'écoute sur la ligne.
Si le service a un public SSL cert, le
https.Agent
n'est généralement pas besoin d'être configuré en outre, parce que votre système d'exploitation fournit un ensemble commun de publiquement autorité de certification de confiance certs. C'est généralement le même ensemble de CA certs votre navigateur est configuré pour utiliser et c'est pourquoi, par défaut axios client peut frapper https://google.com avec peu de bruit.Si le service dispose d'une salle de SSL cert (auto-signé pour des fins de test ou de l'une signée par votre compagnie privée de l'autorité de certification pour protéger leurs secrets), le https agent doit être configuré pour faire confiance à l'autorité de certification privée utilisée pour signer le serveur cert:
où
MY_CA_BUNDLE
est un tableau de CA certs dans.pem
format.const httpsAgent = new https.Agent({ ca: fs.readFileSync(certPath) });
Créer un agent personnalisé avec certificat SSL:
De https://github.com/axios/axios/issues/284
rejectUnauthorized: false
désactive la vérification du client qui est l'un des OPs principales préoccupations.