AWS 上的 Chef:如何更新服务器上的证书?
Chef on AWS: How do you update the certificate on the server?
我正在尝试使用笔记本电脑上的 knife 连接到托管在 AWS 上的新配置的 Chef 服务器。我知道下面列出的内容对我来说是正确的方向,但我不确定该怎么做。
If you are not able to connect to the server using the hostname ip-xx-x-x-xx.ec2.internal
you will have to update the certificate on the server to use the correct hostname.
您无法从 AWS 外部连接到内部 IP(或指向内部 IP 的 DNS)。这些是 nonroutable IP addresses.
相反,连接到实例的 public IP,如果有的话。
我遇到了同样的问题。问题是 EC2 实例将其私有 ip 放入其主机名文件中。这导致厨师自行将证书分配给内部 ip。当您执行 knife ssl check
时,您可能会收到如下所示的错误消息:
ERROR: The SSL cert is signed by a trusted authority but is not valid for the given hostname
ERROR: You are attempting to connect to: 'ec2-x-x-x-x.us-west-2.compute.amazonaws.com'
ERROR: The server's certificate belongs to 'ip-y-y-y-y.us-west-2.compute.internal'
连接到 public IP 是正确的,但是如果您没有将 Chef 服务器配置为在签署证书时使用 public dns,您将继续收到此错误。
编辑: Chef 的文档曾经有纠正此问题的步骤,但自从我最初回答这个问题后,他们已从教程中删除了这些步骤。以下步骤对我在 ec2 实例上使用 Chef 12、Ubuntu 16 有效。
- ssh 到您的 Chef 服务器
- 使用以下命令打开您的主机名文件
sudo vim /etc/hostname
- 删除包含您的内部 ip 的行并将其替换为您的 public ip 并保存文件。
- 使用
sudo reboot
重启服务器
- 运行
sudo chef-server-ctl reconfigure
(这会签署一个新证书,等等)
- 返回您的工作站并使用
knife ssl fetch
,然后使用 knife ssl check
,您应该可以开始了。
您还可以做的是,在将 Chef 安装到服务器之前完成步骤 1 - 4。
- 更新 Chef 服务器上的 public IP
- 运行 在服务器上重新配置 chef-server-ctl(无需重启)
- 使用新 IP 地址更新工作站上的 knife.rb
- 运行 'knife ssl fetch' 在 Chef 工作站上
这应该可以解决问题,以确认 运行 'knife client list'
我正在尝试使用笔记本电脑上的 knife 连接到托管在 AWS 上的新配置的 Chef 服务器。我知道下面列出的内容对我来说是正确的方向,但我不确定该怎么做。
If you are not able to connect to the server using the hostname ip-xx-x-x-xx.ec2.internal
you will have to update the certificate on the server to use the correct hostname.
您无法从 AWS 外部连接到内部 IP(或指向内部 IP 的 DNS)。这些是 nonroutable IP addresses.
相反,连接到实例的 public IP,如果有的话。
我遇到了同样的问题。问题是 EC2 实例将其私有 ip 放入其主机名文件中。这导致厨师自行将证书分配给内部 ip。当您执行 knife ssl check
时,您可能会收到如下所示的错误消息:
ERROR: The SSL cert is signed by a trusted authority but is not valid for the given hostname
ERROR: You are attempting to connect to: 'ec2-x-x-x-x.us-west-2.compute.amazonaws.com'
ERROR: The server's certificate belongs to 'ip-y-y-y-y.us-west-2.compute.internal'
连接到 public IP 是正确的,但是如果您没有将 Chef 服务器配置为在签署证书时使用 public dns,您将继续收到此错误。
编辑: Chef 的文档曾经有纠正此问题的步骤,但自从我最初回答这个问题后,他们已从教程中删除了这些步骤。以下步骤对我在 ec2 实例上使用 Chef 12、Ubuntu 16 有效。
- ssh 到您的 Chef 服务器
- 使用以下命令打开您的主机名文件
sudo vim /etc/hostname
- 删除包含您的内部 ip 的行并将其替换为您的 public ip 并保存文件。
- 使用
sudo reboot
重启服务器
- 运行
sudo chef-server-ctl reconfigure
(这会签署一个新证书,等等) - 返回您的工作站并使用
knife ssl fetch
,然后使用knife ssl check
,您应该可以开始了。
您还可以做的是,在将 Chef 安装到服务器之前完成步骤 1 - 4。
- 更新 Chef 服务器上的 public IP
- 运行 在服务器上重新配置 chef-server-ctl(无需重启)
- 使用新 IP 地址更新工作站上的 knife.rb
- 运行 'knife ssl fetch' 在 Chef 工作站上
这应该可以解决问题,以确认 运行 'knife client list'