这个问题相当开放,因为坦率地说,我不是SSL证书的专家,而是影响多种语言的代码。它甚至可能不是一个代码"问题和更多的基础设施问题,但在这一点上,我只需要有人指出我正确的方向。我最近获得了我的IT部门颁发的证书,用于私人网络上的内部服务。我使用Nginx来监听443并将80重定向到443. Chrome中的所有内容似乎都运行得很好,但是当切换到Firefox时,问题就开始出现了。 Firefox将网站视为自签名证书,您需要在其中明确指示忽略该证书。然而,问题并没有结束,我的厨师食谱现在在我的一个内部服务访问(API,文件复制等)的任何地方失败,并出现以下类型的错误:
================================================================================
Error executing action `create` on resource 'remote_file[Download Installer]'
================================================================================
OpenSSL::SSL::SSLError
----------------------
SSL Error connecting to http://service.domain.com/download/client - SSL Error connecting to https://service.domain.com/download/client - SSL_connect returned=1 errno=0 state=error: certificate verify failed
我在Ruby和NodeJS库中看到了同样的错误。我通过将库设置为忽略不受信任但这是一个临时修复,我能够解决它的大部分问题。我需要理解为什么会这样。我的证书颁发机构是否未正确设置,是否需要让IT人员更改某些配置?我是否需要将证书复制到需要访问这些HTTPS服务的每台计算机上?为什么Chrome工作正常?我在我的本地机器上搜索了我可能在本地获得的证书,这导致我在Chrome测试中得到误报,但我没有任何本地应该有任何影响的东西。 Chrome似乎正在通过网络解析CA? (这就是我认为这有用的方式)非常感谢任何帮助,谢谢。
答案 0 :(得分:0)
我是否需要将证书复制到需要访问这些HTTPS服务的每台计算机上?为什么Chrome工作正常?
每个应该使用它的客户端使用内部CA连接到主机必须信任此CA.我的猜测是管理员确保CA包含在所有计算机上的Windows信任存储中,因为这可以通过策略轻松完成。但是,Firefox,Ruby,NodeJS和Java(以及其他各种工具)都不使用Windows信任存储,但它们都有自己的。因此,本地CA也必须包含在所有这些信任存储中。