Gitlab页面和Jekyll - 设置TLS的问题让我们加密

djm*_*.im 10 ssl jekyll gitlab gitlab-ci lets-encrypt

我尝试在静态网站上添加SSL/TLS.我使用Gitlab静态页面,而Jekyll用于内容.
我按照这个说明设置TLS - Gitlab教程.

我在这部分堆栈 - 我从Gitlab页面得到404错误

构建完成后,如果一切正常,请再次测试:

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

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

我运行jekyll build命令,它创建了_site/.well-known/acme-challenge/5TBu788fW0tQ5EOwZMdu1Gv3e9C33gxjV58hVtWTbDM.html页面.
当我curl向这个页面运行命令时,它可以使用和不使用.html扩展 - 两个命令都可以工作,并返回适当的值

curl http://localhost:4000/.well-known/acme-challenge/5TBu788fW0tQ5EOwZMdu1Gv3e9C33gxjV58hVtWTbDM
curl http://localhost:4000/.well-known/acme-challenge/5TBu788fW0tQ5EOwZMdu1Gv3e9C33gxjV58hVtWTbDM.html
Run Code Online (Sandbox Code Playgroud)

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

curl http://example.com/.well-known/acme-challenge/5TBu788fW0tQ5EOwZMdu1Gv3e9C33gxjV58hVtWTbDM.html
Run Code Online (Sandbox Code Playgroud)

当我跑

curl http://example.com/.well-known/acme-challenge/5TBu788fW0tQ5EOwZMdu1Gv3e9C33gxjV58hVtWTbDM
Run Code Online (Sandbox Code Playgroud)

我收到404错误.

如果我按./letsencrypte脚本继续我也有404错误.此工具尝试不带.html扩展名的URL .

我阅读了教程中的注释并尝试了这种解决方法,但它对我不起作用.

我不知道下一步该尝试什么 - 我对Jekyll/SSL没有多少经验

zon*_*ndo 9

另一个解决方案(由Marthym建议)只是在永久链接行的末尾添加斜杠:

permalink: /.well-known/acme-challenge/5TBu788fW0tQ5EOwZMdu1Gv3e9C33gxjV58hVtWTbDM/
Run Code Online (Sandbox Code Playgroud)

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


小智 4

我所做的是在 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
Run Code Online (Sandbox Code Playgroud)