web-dev-qa-db-fra.com

Utiliser npm derrière le proxy d'entreprise .pac

J'ai besoin de télécharger plusieurs paquets via npm mais notre configuration de proxy d'entreprise est un fichier .pac (je suis sous Windows)

J'ai déjà essayé

npm config set proxy http://mydomain\username:[email protected]:8181/proxy.pac
npm config set https-proxy http://mydomain\username:[email protected]:8181/proxy.pac

ou

npm config set proxy http://1.2.3.4:8181/proxy.pac
npm config set https-proxy http://1.2.3.4:8181/proxy.pac

mais ça ne marche pas ...

toute suggestion? Merci

125
Doc

Je viens d'avoir un problème très similaire, je ne pouvais pas faire fonctionner npm derrière notre serveur proxy.

Mon nom d'utilisateur est de la forme "domaine\nom d'utilisateur" - y compris la barre oblique dans la configuration du proxy, une barre oblique apparaît. Donc en entrant dans ceci:

npm config set proxy "http://domain\username:password@servername:port/"

puis exécuter ce npm config get proxy renvoie ceci: http: // domaine/nom d'utilisateur: mot de passe @ nom_serveur: port/

Par conséquent, pour résoudre le problème, j'ai à la place encodé la barre oblique inversée dans l'URL.

npm config set proxy "http://domain%5Cusername:password@servername:port/"

et avec cela, l'accès au proxy était corrigé.

165
Steve Roberts

Recherchez l'URL du fichier pac dans les paramètres réseau d'Internet Explorer et téléchargez le fichier pac à partir de l'URL configurée . Le fichier pac est simplement un fichier javascript avec une fonction nommée FindProxyForURL qui renvoie différents hôtes proxy dans différents scénarios.

Essayez de trouver un hôte dans le fichier pac que vous pensez être destiné au trafic Web général et branchez-le à .npmrc dans C:\Users\<username>\.npmrc 

proxy=http://<username>:<pass>@proxyhost:<port>
https-proxy=http://<uname>:<pass>@proxyhost:<port>

Même si vous pouvez vous connecter avec votre nom de domaine et votre nom d'utilisateur sur votre ordinateur d'entreprise, Il est fort possible que le nom de domaine de l'utilisateur Active Directory ne soit pas requis pour le proxy , seuls le nom d'utilisateur et le mot de passe (qui peuvent être différents de votre compte actif Répertoire de connexion)

N'oubliez pas de manipuler les caractères spéciaux avec mot de passe.

52
Ovidiu Buligan

Téléchargez votre fichier .pac . Ouvrez-le dans n’importe quel éditeur et cherchez PROXY = "PROXY X.X.X.X:80;. Vous pouvez avoir de nombreux mandataires, en copier un et exécuter les commandes de terminal suivantes:

npm config set proxy http://X.X.X.X:80
npm config set https-proxy http://X.X.X.X:80

Maintenant, vous devriez pouvoir installer n’importe quel paquet!

41
Sumeet_Pol

J'ai résolu ce problème de cette façon:

1) Je lance cette commande:

npm config set strict-ssl false

2) Ensuite, configurez npm pour s'exécuter avec http, au lieu de https

npm config set registry "http://registry.npmjs.org/"

3) Ensuite installez votre paquet 

npm install <package name>

34
KARTHIKEYAN.A

J'avais rencontré plusieurs problèmes avec ceci et finalement ce que j'ai fait est le suivant:

  1. Fiddler utilisé, avec "Authentifier automatiquement" sélectionné 
  2. Dans les règles personnalisées de violoneux, j'ai ajouté 

    if (m_AutoAuth) {oSession["X-AutoAuth"] = "domain\\username:password";}
    
  3. Enfin, dans npm, je règle le proxy sur http: // localhost: 8888

Cela a bien fonctionné.

6
Shoel Palli

Vous pouvez vérifier Fiddler si NPM génère une erreur d’authentification. Il est facile à installer et à configurer. Définissez la règle Fiddler sur Authentifié automatiquement. Dans .npmrc définissez ces propriétés

registry=http://registry.npmjs.org
proxy=http://127.0.0.1:8888
https-proxy=http://127.0.0.1:8888
http-proxy=http://127.0.0.1:8888
strict-ssl=false

Cela a fonctionné pour moi :)

4
Rakesh Sharma

Pour les personnes aux prises avec un pare-feu d'entreprise, ainsi que pour les problèmes liés à SSL (impossible d'obtenir un certificat d'émetteur local), voici quelques étapes que vous pouvez essayer:

Oubliez SSL

Si vous n'êtes pas préoccupé par SSL, vous pouvez suivre les conseils de nombreux contributeurs précédents en définissant vos serveurs proxy et en modifiant le registre en version non sécurisée:

npm config set proxy http://username:password@proxyname:port
npm config set https-proxy http://username:password@proxyname:port
npm config set registry http://registry.npmjs.org/

Un rapide "gotcha" ici, mes informations d'identification de proxy sont les mêmes pour les demandes sécurisées et non sécurisées (remarquez comment j'ai quitté mon protocole en tant que http: // pour la configuration https-proxy). Cela peut être la même chose pour vous et ce n'est peut-être pas le cas.

Je veux garder SSL

Si vous voulez conserver SSL et ne pas utiliser strict-ssl=false, vous avez encore du travail à faire. Pour moi, je suis derrière un pare-feu d'entreprise et nous utilisons des certificats auto-signés. Je reçois donc l'erreur unable to get local issuer certificate. Si vous êtes dans le même bateau que moi, vous devrez définir l'option cafile= dans le fichier de configuration npm. Tout d'abord, vous devez créer un fichier PEM contenant des informations sur vos certificats auto-signés. Si vous ne savez pas comment faire cela, voici des instructions pour un environnement Windows sans utiliser de logiciel tiers:

Nous devons indiquer explicitement quels certificats doivent être approuvés, car nous utilisons des certificats à signature automatique. Pour mon exemple, j'ai accédé à www.google.com à l'aide de Chrome afin de pouvoir récupérer les certificats.

Dans Chrome, accédez à Inspecter -> Sécurité -> Afficher le certificat. Vous verrez tous les certificats autorisant la connexion SSL. Remarquez comment ces certificats sont auto-signés. La partie floue est mon entreprise, et nous ne sommes pas une autorité certifiée. Vous pouvez exporter le chemin d'accès complet au certificat sous forme de fichier P7B, ou les exporter individuellement sous forme de fichiers CER (codage base64). Exporter le chemin complet en tant que P7B ne vous sera pas très utile, car vous devrez à son tour ouvrir ce fichier dans un gestionnaire de certificats et l'exporter en tant que fichier CER individuel. Sous Windows, double-cliquez sur le fichier P7B pour ouvrir l’application Certificate Manager.

 enter image description here

Exporter en tant que CER (Base 64) est en réalité un fichier texte au format suivant:

-----BEGIN CERTIFICATE-----
MIIGqzCCBZOgAwIBAgITIwAAABWhFPjwukYhTAADAAAAFTANBgkqhkiG9w0BAQUF
ADBFMRMwEQYKCZImiZPyLGQBGRYDY29tMRYwFAYKCZImiZPyLGQBGRYGaXJ2aW5n
b0pvCkNmjWzaNNUg2hYET+pP5nP75aRu+kPRl9UnlQ....rest of certificate...
-----END CERTIFICATE-----

Pour créer notre fichier PEM, nous devons simplement empiler ces certificats les uns sur les autres dans un seul fichier et changer l'extension en .pem. J'ai utilisé le bloc-notes pour faire cela.

Vous empilez les certificats dans l'ordre inverse du chemin du certificat. Donc, ci-dessus, je commencerais par * .google.com, puis collerais Websense en dessous, puis Émettre autorité de certification 1, etc. Ainsi, les certificats sont analysés de haut en bas à la recherche de l'autorité de certification racine appropriée. Inclure simplement l'autorité de certification racine ne fonctionnera pas, mais nous n'avons pas non plus besoin d'inclure tous les certificats. Dans le chemin ci-dessus, il me suffit d'inclure les certificats précédant le certificat Websense (autorité de certification émettrice 1, autorité de certification politique, autorité de certification racine).

Une fois que ces certificats auto-signés sont enregistrés dans un fichier PEM, nous sommes prêts à indiquer à npm d'utiliser ces certificats comme notre autorité de certification approuvée. Il suffit de définir le fichier de configuration et vous devriez être bon pour aller:

npm config set cafile "C:\yourcerts.pem"

Désormais, avec votre jeu de proxies (http et https) et le registre défini sur https://registry.npmjs.org, vous devriez pouvoir installer des packages derrière un pare-feu d'entreprise avec des certificats auto-signés sans modifier le paramètre strict-ssl.

4
John Galt

Essayez ceci, Définissez le proxy dans NPM comme suit

npm config set proxy "http://<user-name>:<password>@<proxy-url>:<port>"
npm config set https-proxy "http://<user-name>:<password>@<proxy-url>:<port>"
npm config set strict-ssl false
npm config set registry "http://registry.npmjs.org/"
3
Mohammed Safeer

Utilisez la commande ci-dessous à cmd ou GIT Bash ou autre invite

$ npm config set proxy "http://192.168.1.101:4128"

$ npm config set https-proxy "http://192.168.1.101:4128"

où 192.168.1.101 est le proxy ip et 4128 le port. changer en fonction de vos paramètres de proxy.

2
Pankaj

Si vous êtes derrière un réseau d'entreprise avec proxy, je viens d'utiliser un outil proxy NTLM et le port et le proxy fournis par NTLM. 

strict-ssl=false
proxy=http://localhost:3125

J'espère que ça aide.

2

Vous obtiendrez l'hôte et le port proxy auprès de votre administrateur de serveur ou de l'assistance.

Après cela mis en place

npm config set http_proxy http://username:[email protected]:itsport
npm config set proxy http://username:[email protected]:itsport

Si le mot de passe contient des caractères spéciaux, essayez avec% urlencode. Exemple: - la livre (hachage) doit être remplacée par% 23.

Cela a fonctionné pour moi ...

2
Shamseer

Vous devez utiliser "npm config set http-proxy

utilisation:

npm config set http-proxy http://1.2.3.4:8181
npm config set https-proxy http://1.2.3.4:8181
2

Essayez ceci, c’est le seul qui a fonctionné pour moi:

npm --proxy http: //: @proxyhost: --https-proxy http: //: @proxyhost: --strict-ssl false installer le paquet

Faites attention à l'option --strict-ssl false

Bonne chance.

1
Matías Dell'Oso

Il suffit de créer un fichier nommé .npmrc dans un dossier de votre projet, cela évitera le paramétrage du proxy au niveau du système

#Without password
proxy=http://ipaddress:80
https-proxy=http://ipaddress:80

#With password
proxy=http://<username>:<pass>@proxyhost:<port>
https-proxy=http://<uname>:<pass>@proxyhost:<port>

Commentez comme ceci si vous n'utilisez pas le proxy

#proxy=http://ipaddress:80
#https-proxy=http://ipaddress:80

#With password
#proxy=http://<username>:<pass>@proxyhost:<port>
#https-proxy=http://<uname>:<pass>@proxyhost:<port>
1
Vinayak Shedgeri

La configuration du proxy NPM mentionnée dans la réponse acceptée résout le problème, mais comme vous pouvez le voir dans le problème this npm, certaines dépendances utilisent GIT et rendent la configuration du proxy git nécessaire, et peut être fait comme suit:

git config --global http.proxy http://username:password@Host:port
git config --global https.proxy http://username:password@Host:port

La configuration du proxy NPM mentionnée:

npm config set proxy "http://username:password@Host:port"
npm config set https-proxy "http://username:password@Host:port"
npm config set strict-ssl false
npm config set registry "http://registry.npmjs.org/"
1
Josiel Faleiros

Parce que j'ai toujours des problèmes pour définir les paramètres de proxy au travail et les désactiver à la maison, j'ai créé et publié un script npm-corpo-proxy.sh . Dans chaque corpo, le mot de passe doit être changé souvent et doit contenir des caractères spéciaux, qui doivent être encodés avant de fournir npm config (identique pour backback form domain\user).

0
Maciek Leks

Je ne pouvais pas le faire fonctionner avec le CNTLM. J'ai essayé de suivre toutes les informations postées ci-dessus, mais le proxy n'autorisait toujours pas la connexion. Avec Fiddler, il vous suffit de l'installer et de cocher l'option Authentifié automatiquement. Mais pour fonctionner, j'ai dû supprimer le fichier .npmrc de mon dossier utilisateur et définir les variables d'environnement comme indiqué ici , avec ces valeurs:

set npm_config_https-proxy="http://127.0.0.1:8888"

set npm_config_registry="http://registry.npmjs.org/"
0
Guilherme Pereira

J'ai rencontré un problème similaire et découvert que mon fichier de configuration npm (.npmrc) avait une mauvaise entrée de registre. a commenté et relancé l’installation de npm. ça a marché.

0
Ravi Siva Prasad M

L'ajout des lignes ci-dessous dans le fichier .typingsrc m'a aidé.

{
    "rejectUnauthorized": false,
    "registryURL" :"http://api.typings.org/"
 }
0
Tapas Ranjan Singh

J'avais un problème similaire et j'ai essayé toutes les solutions ci-dessus, mais aucune d'entre elles ne fonctionnait pour moi (j'utilisais des caractères spéciaux (comme le symbole '@' dans mon mot de passe et j'avais également besoin d'ajouter un nom de domaine).

En dehors de cela, je craignais un peu d'ajouter mon mot de passe sous forme de texte brut… La solution la plus simple pour surmonter tous ces défis était d'utiliser une sorte de proxy inverse (comme Fiddler).

J'ai déjà détaillé les étapes de configuration dans this answer in SO.

0
Karthik

À partir d’une petite recherche sur google, la première chose que j’ai essayée était la suivante:

npm config set registry http://registry.npmjs.org/
npm config set proxy "your proxy"
npm config set https-proxy "your proxy"

Mais npm semblait toujours perdre la connexion en essayant de faire "npm install". alors j'ai couru cette ligne dans l'invite de commande et maintenant je peux utiliser l'installation de npm 

set NODE_TLS_REJECT_UNAUTHORIZED=0
0
Barkin Kaplan

OS: Windows 7

Étapes qui ont fonctionné pour moi: 

  1. npm config get proxy 
  2. npm config get https-proxy 

  3. Commentaires: j'ai exécuté cette commande pour connaître mes paramètres de proxy
    npm config rm proxy 

  4. npm config rm https-proxy
  5. npm config set registry=http://registry.npmjs.org/
  6. npm install
0
Suchi Dvg

Au travail, nous utilisons ZScaler comme proxy. Le seul moyen de faire fonctionner NPM a été d’utiliser Cntlm

Voir cette réponse:

NPM derrière le proxy NTLM

0
bruceceng