Discourse 如何不使用 Let’s Encrypt 而使用 CA 簽名的密鑰進行安裝

經過訪問密鑰簽發機構上面提供的信息瞭解到:Let’s Encrypt 針對一個域名只會在必定時間內簽發 5 次,若是你超過了簽發的次數,你須要 5 天后才能再次申請。web

這個可能對你會形成沒法安裝成功的影響,由於你只有 5 次安裝的機會,不然你在安裝過程當中會獲得錯誤信息以下:docker

[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 簽名的流程還不太瞭解的話,你能夠搜索下相關文章。app

最簡單的邏輯就是你本身生成一個 key,而後將這個 key 和你的域名信息發給 CA 簽發機構,這些機構會對你的信息進行一些審查。由於咱們只簽名 www 和根域名,這種簽名方式是最簡單的,只要校驗你是否是域名的持有者,基本會發個郵件到你的郵箱中就能夠確認了。dom

當上面的信息確認後,CA 會將你發給他們的 key 進行簽名,簽名後將結果返回給你,這就是你拿到的 crt。ide

要對域名進行 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 簽名。

 

Discourse-ssl-path-01

 

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

開放端口
你須要進行檢查你容器的端口。

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

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

你能夠爲你的容器開放更多的端口,可是針對 https 和 http ,你須要至少開放 80 和 443 端口。

 

Discourse-ssl-path-02

 

在上面咱們的配置中,咱們開放了上述的 2 個端口。

從新編譯

在完成上面的全部操做後,進入目錄 /var/discourse,而後在這個目錄下運行:

./launcher rebuild app

對整個網站進行從新編譯。當編譯部署完成後,使用命令:

./launcher logs app

查看編譯的結果,若是沒有任何錯誤,表示編譯部署成功,你的網站應該使用的是你本身的密鑰了。

爲了保險起見,你能夠重啓下 docker 容器。

重啓 docker 容器的命令是:

systemctl restart docker

校驗安裝

在完成上面的全部操做後,你就能夠經過瀏覽器訪問你的網站的。

在任何瀏覽器的右上角,單擊帶鎖的圖標,而後查看證書。

 

Snag_54685d07

 

你能夠經過這個連接查看你證書的簽發機構,有效期和相關信息,以肯定你的證書被正確安裝到服務器上了。

 

Discourse-ssl-path-04

 

但願咱們能一塊兒構建更加安全和清潔的網絡。

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

相關文章
相關標籤/搜索