Gitlab 页面和 Jekyll - 设置 TLS Let's Encrypt 的问题

Gitlab pages and Jekyll - issue with set up TLS Lets Encrypted

我尝试在我的静态网站上添加 SSL/TLS。我用的是Gitlab静态页面,Jekyll是做内容的。
我按照此说明设置 TLS - Gitlab tutorial.

我正在处理这部分 - 我从 Gitlab 页面收到 404 错误

Once the build finishes, test again if everything is working well:

# Note that we're using the actual domain, not localhost anymore
$ curl http://YOURDOMAIN.org/.well-known/acme-challenge/5TBu788fW0tQ5EOwZMdu1Gv3e9C33gxjV58hVtWTbDM

下一个问题 我使用命令 ./letsencrypt-auto certonly -a manual -d example.com
成功生成了证书 我在根目录中创建了包含适当内容的自定义页面 letsencrypt-setup.html

我 运行 jekyll build 命令并创建了 _site/.well-known/acme-challenge/5TBu788fW0tQ5EOwZMdu1Gv3e9C33gxjV58hVtWTbDM.html 页面。
当我向此页面发出 运行 curl 命令时,它可以使用和不使用 .html 扩展名 - 两个命令都有效,并且 return 适当的值

curl http://localhost:4000/.well-known/acme-challenge/5TBu788fW0tQ5EOwZMdu1Gv3e9C33gxjV58hVtWTbDM
curl http://localhost:4000/.well-known/acme-challenge/5TBu788fW0tQ5EOwZMdu1Gv3e9C33gxjV58hVtWTbDM.html

当我在构建和部署后提交更改并推送到 Gitlab 时,我只能使用第二个命令获取适当的内容

curl http://example.com/.well-known/acme-challenge/5TBu788fW0tQ5EOwZMdu1Gv3e9C33gxjV58hVtWTbDM.html

当我运行

curl http://example.com/.well-known/acme-challenge/5TBu788fW0tQ5EOwZMdu1Gv3e9C33gxjV58hVtWTbDM

我收到 404 错误。

如果我在 ./letsencrypte 脚本中按继续,我也会遇到 404 错误。此工具在没有 .html 扩展名的情况下尝试对抗 URL。

我阅读了教程中的评论并尝试了这个 workaround 但它对我不起作用。

我不知道接下来要尝试什么 - 我对 Jekyll/SSL 没有太多经验

我所做的是在 gitlab 上完成构建后复制了挑战文件,因为我不知道如何让 jekyll 省略文件扩展名。

我的 .gitlab-ci.yml 文件

image: ruby:2.3

pages:
  script:
  - gem install jekyll
  - jekyll build -d public
  # Use this when creating a new letsencrypt cert, this since jekyll adds .html to the file and letsencrypd does not expect a .html extension
  - cp ./public/.well-known/acme-challenge/HASHFILE-FROM-LETSENCRYPT.html ./public/.well-known/acme-challenge/HASHFILE-FROM-LETSENCRYPT
  artifacts:
    paths:
    - public
  only:
  - master

另一个解决方案(如suggested by Marthym)是简单地在永久链接行的末尾添加一个斜杠:

permalink: /.well-known/acme-challenge/5TBu788fW0tQ5EOwZMdu1Gv3e9C33gxjV58hVtWTbDM/

这样,访问YOURDOMAIN.org/.well-known/acme-challenge/...会重定向到YOURDOMAIN.org/.well-known/acme-challenge/.../(注意额外的斜杠),这将具有正确的数据。它对我来说完美无缺,当我切换到另一个域时,我不需要更新 .gitlab-ci.yml。

添加额外的斜线对我不起作用。我不得不添加'/index.html'。

permalink: /.well-known/acme-challenge/${CHALLENGE}/index.html