为了获得 let的加密证书,我必须验证我是域的所有者。如果您在 OpenShift Online 中的容器中运行自己的应用程序,则没有问题。但在这种情况下,我只是从官方docker注册表中提取图像并直接在 OpenShift Online 中运行。
我现在能够想到的唯一方法是登录正在运行的pod并在那里安装/运行Web服务器。但这对我来说似乎有些苛刻,我甚至不确定这在第三方图像提供的环境中是否可行。
有没有人知道如何在 OpenShift Online v3中执行此操作?
答案 0 :(得分:0)
自己解决了。解决方案是使用带有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...
我使用域名注册商的网络界面来创建TXT记录。
TXT记录需要一段时间才能公开发布。我在笔记本电脑上使用此命令来检查TXT记录是否准备就绪:
dig -t txt _acme-challenge.mysubdomain.mydomain.com +short
一旦它返回密钥就准备就绪。准备就绪后,您可以返回certbot
终端窗口并按ENTER键开始验证过程。
如果一切正常,certbot将证书/私钥保存在:
下/etc/letsencrypt/live/mysubdomain.mydomain.com/
您可以使用新的certifacate / privatekey创建一个安全路由,如下所示:
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