0

为了获得让我们加密证书,我必须验证我是域的所有者。如果您在OpenShift Online的容器中运行自己的应用程序,这没有问题。但在这种情况下,我只是从官方 docker 注册表中提取图像并直接在OpenShift Online中运行它。

我现在能想到的唯一方法是登录到正在运行的 pod 并在那里安装/运行网络服务器。但这对我来说似乎有点 hacky,我什至不确定这在第三方图像提供的环境中是否可行。

有谁知道如何在OpenShift Online v3 中做到这一点?

4

1 回答 1

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...

我使用我的域名注册商的 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
于 2018-01-12T22:10:53.723 回答