• Discourse 如何不使用 Let’s Encrypt 而使用 CA 签名的密钥进行安装


    通过访问密钥签发机构上面提供的信息了解到:Let’s Encrypt 针对一个域名只会在一定时间内签发 5 次,如果你超过了签发的次数,你需要 5 天后才能再次申请。

    这个可能对你会造成无法安装成功的影响,因为你只有 5 次安装的机会,否则你在安装过程中会得到错误信息如下:

    [Sun 04 Oct 2020 04:52:58 AM UTC] Create new order error. Le_OrderFinalize not found. {
      "type": "urn:ietf:params:acme:error:rateLimited",
      "detail": "Error creating new order :: too many certificates already issued for exact set of domains: www.ossez.com: see https://letsencrypt.org/docs/rate-limits/",
      "status": 429
    }
    

    使用 CA 签名的域名

    我们参考了官方的帮助文档,并且参照我们的平台进行测试后安装成功了。

    现将经验分享给大家。

    官方的安装 CA 签名密钥内容如下:https://meta.discourse.org/t/advanced-setup-only-allowing-ssl-https-for-your-discourse-docker-setup/13847

    购买 SSL

    首先你获得已经对你域名签名的密钥,这个密钥通常的格式是 key 和 crt。

    如果你对 https 签名的流程还不太了解的话,你可以搜索下相关文章。

    最简单的逻辑就是你自己生成一个 key,然后将这个 key 和你的域名信息发给 CA 签发机构,这些机构会对你的信息进行一些审查。因为我们只签名 www 和根域名,这种签名方式是最简单的,只要校验你是不是域名的持有者,基本会发个邮件到你的邮箱中就可以确认了。

    当上面的信息确认后,CA 会将你发给他们的 key 进行签名,签名后将结果返回给你,这就是你拿到的 crt。

    要对域名进行 https 加密,需要上面 2 个文件就可以了。

    将文件上传到服务器

    Discourse 对文件的命名有要求,你不能随意命名。不管你签名的域名是什么。你在安装的时候的 key 文件需要命名为 ssl.key,你的 crt 文件需要命名为 ssl.crt。

    你不能将你的密钥命名为其他名称,文件名要和上面的要求一致。

    文件放置的位置为:/var/discourse/shared/standalone/ssl 路径下面。

    配置信息如下表:

    文件名类型放置路径
    ssl.key key 文件 /var/discourse/shared/standalone/ssl/ssl.key
    ss.crt crt 文件 /var/discourse/shared/standalone/ssl/ssl.crt

    请注意,这个放置的位置是你的服务器的文件路径位置,不是你服务器上安装 docker 容器后,docker 容器内的文件路径。

    Discourse-ssl-path

    如上图,我们显示的文件路径和文件内容。

    如果你服务器上不仅仅只有这 2 个文件,可能还有其他签名的文件的话,请删除其他的文件,只保留这 2 个文件。

    修改 app.yml

    修改 app.yml 文件中的配置。

    app.yml 文件的路径为 /var/discourse/containers/app.yml,可以使用下面的命令进行修改:

    vi /var/discourse/containers/app.yml
    

    在这里,有 2 个地方需要注意:

    如果

      - "templates/web.ssl.template.yml" 
    

    这一行被注释的话,你需要取消注释。

    如果

    - "templates/web.letsencrypt.ssl.template.yml"
    

    这一行没有注释的话,你需要注释上。

    我们的文件看起如下:

    ## Uncomment these two lines if you wish to add Lets Encrypt (https)
      - "templates/web.ssl.template.yml"
    #  - "templates/web.letsencrypt.ssl.template.yml"
    

    上面的这个配置这样注释的意图就是,启用 ssl 的配置,但是撤销使用 letsencrypt 的 ssl 签名。

    完成上面的修改后,保存退出。

    开放端口
    你需要进行检查你容器的端口。

    你需要查看下你的 app.yml 文件中的端口是否被添加到容器中了。

    expose:
      - "80:80"
      - "443:443"
    

    你可以为你的容器开放跟多的端口,但是针对 https 和 http ,你需要至少开放 80 和 443 端口。

    在上面我们的配置中,我们开放了上述的 2 个端口。

    重新编译

    在完成上面的所有操作后,进入目录 /var/discourse,然后在这个目录下运行:

    ./launcher rebuild app
    

    对整个网站进行重新编译。当编译部署完成后,使用命令:

    ./launcher logs app
    

    查看编译的结果,如果没有任何错误,表示编译部署成功,你的网站应该使用的是你自己的密钥了。

    为了保险起见,你可以重启下 docker 容器。

    重启 docker 容器的命令是:

    systemctl restart docker
    

    校验安装

    在完成上面的所有操作后,你就可以通过浏览器访问你的网站的。

    在任何浏览器的右上角,单击带锁的图标,然后查看证书。

    你可以通过这个链接查看你证书的签发机构,有效期和相关信息,以确定你的证书被正确安装到服务器上了。

    希望我们能一起构建更加安全和清洁的网络。

    https://www.ossez.com/t/discourse-lets-encrypt-ca/552

  • 相关阅读:
    一起谈.NET技术,用Dojo实现Ajax请求:XHR、跨域、及其他 狼人:
    一起谈.NET技术,微软 Share Point 2010 企业应用解决方案 狼人:
    一起谈.NET技术,MVC2.0本地化(另类解决方案)<上> 狼人:
    一起谈.NET技术,WCF的问题和Using语句块 狼人:
    一起谈.NET技术,微软缘何认为VB与C#需要异步语法 狼人:
    一起谈.NET技术,SharePoint 2010 BI:Chart WebPart 狼人:
    一起谈.NET技术,微博是个大金矿,使用VS2010编译QOAuth支持微博通用认证OAuth实现SINA微博登陆 狼人:
    一起谈.NET技术,不要在using语句中调用WCF服务 狼人:
    一起谈.NET技术,使用Dijit实现界面组件化开发 狼人:
    一起谈.NET技术,通过自定义配置实现插件式设计 狼人:
  • 原文地址:https://www.cnblogs.com/huyuchengus/p/13771800.html
Copyright © 2020-2023  润新知