我在一家大公司内的一个小团队工作。
所有网络流量都通过公司的防火墙,当任何流量进入时,我认为他们就像一个中间人。
我看到这一点的一个例子是使用curl
c:\>curl https://www.google.com
curl: (60) SSL certificate problem: self signed certificate in certificate chain
所以我用以下方法检查证书链:
c:\>openssl s_client -connect google.com:443
然后回来(删除一些细节)
Certificate chain
0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=*.google.com
i:/C=US/My Company's Intermediate CA
1 s:/C=US/My Company's Intermediate CA
i:/C=US/My Company's Root CA
2 s:/C=US/My Company's Root CA
i:/C=US/My Company's Root CA
这对使用npm或composer等包管理器提出了挑战,因为所有https
由于自签名证书错误而失败,或者根本无法验证证书< / p>
我可以通过设置配置值ca=""
和strict-ssl=false
来使npm工作,但这是一种不安全的做法。
我希望我们的开发团队能够访问包管理器,特别是npm和composer
鉴于我无法改变防火墙的工作方式,我是否可以在本地计算机(Windows 7)或VM(Windows Server 2008 R2)上进行任何更改,以便我们的开发团队能够完全安全地利用这些包管理器。
谢谢!
答案 0 :(得分:1)
我在公司四处询问并最终与合适的人说话:
我们所有的互联网流量都通过公司。 COMPANY拦截所有HTTPS流量,替换证书,然后添加自己的证书。这样他们就可以解密和分析所有加密的流量(基本上是中间人攻击的人) 必须信任COMPANY根证书以避免警告和错误。
我有一个链接,可以下载正确的pem键。
使用该密钥,我能够为各种包管理器设置正确的配置选项。
<强> NPM 强>
npm config set cafile C:\\path\\to\\cert.pem
npm config set strict-ssl true
(窗口中需要双反斜杠)
<强>作曲家强>
必须在php.ini中设置某些值才能让作曲家工作。
openssl.cafile = C:\path\to\cert.pem
curl.cainfo = C:\path\to\cert.pem
对于任何其他抛出证书错误的程序(未经验证,自签名等),我最终找到了某种配置设置,我可以指向该pem文件并全部工作。