Chef使用自签名证书通过https使用winrm发布引导windows VM

Chef使用自签名证书通过https使用winrm发布引导windows VM,windows,chef-infra,bootstrapping,winrm,Windows,Chef Infra,Bootstrapping,Winrm,厨师长服务器(RHEL 6.5):11.16.4 Windows端点:Windows 2008 引导在http上运行良好(使用winrm config allowenencrypeted=true和basic auth=true) 现在,我们正在https上尝试同样的事情(,但使用basic auth=false和AllowUnEncrypted=false) 生成了自签名证书(使用私钥),我已经通过端口443验证了telnet 为了检查连接,我从终端(windows 7)运行了以下命令 理想情

厨师长服务器(RHEL 6.5):11.16.4

Windows端点:Windows 2008

引导在http上运行良好(
使用winrm config allowenencrypeted=true和basic auth=true

现在,我们正在https上尝试同样的事情(
,但使用basic auth=false和AllowUnEncrypted=false

生成了自签名证书(使用私钥),我已经通过端口443验证了telnet

为了检查连接,我从终端(windows 7)运行了以下命令

理想情况下,如果winrs命令起作用(这意味着自签名证书生成和侦听器配置没有问题),那么应该这样做

非常感谢您的帮助/指点


更新:

  • 在创建侦听器时注意删除指纹中的空格

  • ssl检查
    能够验证证书

  • 在link[link]上尝试使用
    --no-ssl对等验证
    选项

  • env var
    SSL\u CERT\u文件
    指向包含远程机器证书的
    /opt/chef server/embedded/SSL/certs/cacert.pem

  • 尝试在
    /opt/opscode/embedded/jre/jre/lib/security/cacerts上向密钥库添加证书的临时建议

  • 这个问题仍然存在


    更新:

    这就是成功的原因

    编辑文件

    /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/knife-windows-0.8.0/lib/chef/knife/bootstrap\u windows\u winrm.rb

    并添加行

    winrm.config[:无ssl\u对等验证]=true

    编辑文件

    /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/knife-windows-0.8.0/lib/chef/knife/winrm.rb

    并添加行

    session\u opts[:no\u ssl\u peer\u verification]=如果配置有密钥,则为true(:no\u ssl\u peer\u verification)

    它仍然会给出自签名错误,但至少会引导它

    输出:

    在引导前等待远程响应。深度为0-18:自签名证书
    深度为0-18时:自签名证书
    tpm72-win2K8R2.example.com。
    收到tpm72-win2K8R2.example.com响应。
    远程节点在0.0分钟后响应。
    tpm72-win2K8R2.example.com上的引导厨师
    深度为0-18时:自签名证书
    深度为0-18时:自签名证书
    tpm72-win2K8R2.example.com“Rendering”C:\Users\ADMINI~1\AppData\Local\Temp\bootstrap-22620-1423038641.bat“chunk 1”
    深度为0-18时:自签名证书
    深度为0-18时:自签名证书
    tpm72-win2K8R2.example.com“Rendering”C:\Users\ADMINI~1\AppData\Local\Temp\bootstrap-22620-1423038641.bat“chunk 2”
    

    刀子命令使用openssl库,它对您的windows证书存储没有任何线索,但使用它自己的

    您必须在
    \embedded\ssl\certs\cacert.pem
    中将远程计算机证书添加到ruby堆栈的cacert.pem文件中


    您可能需要添加一个名为
    SSL\u CERT\u FILE
    的环境变量,以指向该文件,以便使用其他工具。

    谢谢您的建议。SSL_CERT_文件设置为/opt/chef server/embedded/SSL/certs/cacert.pem我已尝试在两个位置将远程计算机证书添加到cacert.pem
    /opt/chef/embedded/SSL/certs/cacert.pem
    /opt/chef server/embedded/SSL/certs/cacert.pem
    ,以避免任何歧义,添加意味着我将远程计算机证书的内容复制到两个位置的cacert.pem文件的末尾。远程机器认证内容的形式为“----开始证书------等等----结束证书----------Ivan不确定您的评论结果,您是否仍然存在SSL错误?(带域身份验证示例的文档快速链接:)是错误仍然存在。在创建侦听器时,我注意到删除了您粘贴的链接中提到的空格,并且端口也正确(从windows计算机触发的winrs成功结果可以看出)。刀子ssl检查的输出为正(使用刀子ssl获取将其添加到受信任的\u证书后)。请让我知道我是否可以验证任何其他内容。@Ivan我真的认为linux机器无法绕过基本身份验证,如果可以,我将查看代码。同时,您可以尝试从您的工作站引导(在其上配置刀子等)。在试用中的一些更新我尝试了--node ssl verify mode选项(只是为了检查)在bootstrap中,windows winrm在/opt/opscode/embedded/jre/jre/lib/security/cacerts尝试了在link[link]中提到的选项,最后一个选择出现在我的脑海中,使用与http相同的参数通过https尝试(查看是否只是证书问题或证书警告中添加的身份验证问题)@Tensibai Error保持不变,保持参数与http相同(
    winrm config allowenencrypeted=true和basic auth=true
    )。我将尝试此操作,以查看[link]是否有助于查看您的一个链接(3)似乎CA证书文件有一个配置选项:
    winrm.config[:CA\u trust\u file]=Chef::config[:knife][:CA\u trust\u file]如果Chef::config[:knife][:CA\u trust\u file]
    那么您可以尝试添加
    knife[:CA\u trust\u file]=“opt/Chef server/embedded/ssl/certs/cacert.pem”
    到您的knife.rb文件。@Tensibai更新了一个解决方法。似乎绕过了错误。感谢更新,它可能会帮助其他人:)
    winrs -r:https://<fqdn Of windows EP>:443 -u:administrator -p:password_1 ipconfig
    
      [root@v-ng25-rhel6u5-tpm722 ~]# knife bootstrap windows winrm v-ngibm71tpm7222k8.example.co.in -x Administrator -P 'password_1' -p 443 --bootstrap-version '11.16.4-1'
    
    Waiting for remote response before bootstrap.at depth 0 - 18: self signed certificate
    ..at depth 0 - 18: self signed certificate
    ..at depth 0 - 18: self signed certificate
    ..at depth 0 - 18: self signed certificate
    ..at depth 0 - 18: self signed certificate
    ..at depth 0 - 18: self signed certificate
    ..at depth 0 - 18: self signed certificate
    ..at depth 0 - 18: self signed certificate
    ..at depth 0 - 18: self signed certificate
    
    
    ERROR: No response received from remote node after 1.84 minutes, giving up.
    ERROR: OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed