为了获得让我们加密证书,我必须验证我是域的所有者。如果您在OpenShift Online的容器中运行自己的应用程序,这没有问题。但在这种情况下,我只是从官方 docker 注册表中提取图像并直接在OpenShift Online中运行它。
我现在能想到的唯一方法是登录到正在运行的 pod 并在那里安装/运行网络服务器。但这对我来说似乎有点 hacky,我什至不确定这在第三方图像提供的环境中是否可行。
有谁知道如何在OpenShift Online v3 中做到这一点?
为了获得让我们加密证书,我必须验证我是域的所有者。如果您在OpenShift Online的容器中运行自己的应用程序,这没有问题。但在这种情况下,我只是从官方 docker 注册表中提取图像并直接在OpenShift Online中运行它。
我现在能想到的唯一方法是登录到正在运行的 pod 并在那里安装/运行网络服务器。但这对我来说似乎有点 hacky,我什至不确定这在第三方图像提供的环境中是否可行。
有谁知道如何在OpenShift Online v3 中做到这一点?
自己解决了。解决方案是使用带有 certbot的DNS-01 Challenge 。
使用这种方法,您需要为要保护的域创建TXT 记录,并添加从certbot获得的密钥作为 TXT 记录的值。然后,Certbot 通过从 TXT 记录中读取密钥来验证您的域所有权。它是这样工作的:
首先我运行了这个命令:
sudo certbot -d mysubdomain.mydomain.com --manual --preferred-challenges dns certonly
它返回一个看起来像这样的子域:_acme-challenge.mysubdomain
和一个看起来像这样的键:M7MsmY-YywYddXfAVwaKje...
然后我用这些值为 mydomain.com创建了一个TXT 记录:
Type: TXT Record
Host: _acme-challenge.mysubdomain
Value: M7MsmY-YywYje...
我使用我的域名注册商的 Web 界面来创建 TXT 记录。
TXT 记录需要一段时间才能公开。我在笔记本电脑上使用了这个命令来检查 TXT 记录是否准备好:
dig -t txt _acme-challenge.mysubdomain.mydomain.com +short
它一返回密钥就准备好了。准备就绪后,您可以返回certbot
终端窗口并按 ENTER 开始验证过程。
如果一切正常,certbot 将证书/私钥保存在:
/etc/letsencrypt/live/mysubdomain.mydomain.com/
您可以使用新的证书/私钥创建安全路由,如下所示:
sudo oc create route edge my-route-name \
--service=my-service \
--cert=/etc/letsencrypt/live/mysubdomain.mydomain.com/fullchain.pem \
--key=/etc/letsencrypt/live/mysubdomain.mydomain.com/privkey.pem \
--hostname=mysubdomain.mydomain.com \
--insecure-policy=Redirect -n my-project