免費Letsencrypt http公升級https

2021-10-24 20:26:08 字數 3580 閱讀 4186

那如何將乙個http站點公升級為https站點呢?

為了資料傳輸的安全,https在http的基礎上加入了ssl協議,ssl協議依靠證書來驗證伺服器的身份,並為瀏覽器和伺服器之間的通訊加密。要想將http公升級為https,只需要給http站點增加乙個ca證書即可。

目前獲取ca證書有兩種途徑:

購買收費的ca證書

獲取免費的證書

收費的證書不便宜,從阿里雲官方**看,它的**可以從幾千元到上萬元不等。

這對於小公司平台,甚至是個人站點來說,是乙個不小的開支。

letsencrypt是乙個免費、自動化和開放的證書頒發機構,其頒發的證書一次有效期為三個月,但是只要能持續更新,基本可以永久使用。

安裝acme.sh很簡單,乙個命令即可:

curl | sh

普通使用者和 root 使用者都可以安裝使用。安裝過程進行了以下幾步:

1、把acme.sh安裝到你的home目錄下:

~/.acme.sh/

並建立 乙個 bash 的 alias,方便你使用:alias acme.sh=~/.acme.sh/acme.sh

2、自動為你建立 cronjob,每天 0:00 點自動檢測所有的證書。如果快過期了,需要更新,則會自動更新證書,安裝過程不會汙染已有的系統任何功能和檔案,所有的修改都限制在安裝目錄中:~/.acme.sh/

acme.sh 實現了 acme 協議支援的所有驗證協議, 一般有兩種方式驗證:http 和 dns 驗證。

1、http 方式需要在你的**根目錄下放置乙個檔案, 來驗證你的網域名稱所有權,完成驗證,然後就可以生成證書了。

acme.sh 會全自動的生成驗證檔案, 並放到**的根目錄,然後自動完成驗證。最後會聰明的刪除驗證檔案,整個過程沒有任何***。

如果你用的是apache伺服器,acme.sh 還可以智慧型的從 apache的配置中自動完成驗證,你不需要指定**根目錄:

acme.sh --issue -d mydomain.com --apache

如果你用的是nginx伺服器,或者反代,acme.sh還可以智慧型的從 nginx的配置中自動完成驗證,你不需要指定**根目錄:

acme.sh --issue -d mydomain.com --nginx

注意:無論是 apache 還是 nginx 模式,acme.sh在完成驗證之後,會恢復到之前的狀態,都不會私自更改你本身的配置。好處是你不用擔心配置被搞壞,但也有乙個缺點,你需要自己配置 ssl 的配置,否則,只能成功生成證書,你的**還是無法訪問https。但是為了安全,你還是自己手動改配置吧。

如果你還沒有執行任何 web 服務,80 埠是空閒的, 那麼 acme.sh 還能假裝自己是乙個webserver, 臨時聽在80 埠,完成驗證:

acme.sh --issue -d mydomain.com --standalone

2、dns 方式,在網域名稱上新增一條 txt 解析記錄,驗證網域名稱所有權。

這種方式的好處是,你不需要任何伺服器,不需要任何公網 ip,只需要 dns 的解析記錄即可完成驗證。不過,壞處是,如果不同時配置 automatic dns api,使用這種方式 acme.sh 將無法自動更新證書,每次都需要手動再次重新解析驗證網域名稱所有權。

acme.sh --issue --dns -d mydomain.com

然後,acme.sh 會生成相應的解析記錄顯示出來,你只需要在你的網域名稱管理面板中新增這條 txt 記錄即可。

等待解析完成之後, 重新生成證書:

acme.sh --renew -d mydomain.com

注意:第二次這裡用的是 --renew

dns 方式的真正強大之處在於可以使用網域名稱解析商提供的 api 自動新增 txt 記錄完成驗證。

acme.sh 目前支援 cloudflare, dnspod, cloudxns, godaddy 以及 ovh 等數十種解析商的自動整合。

前面證書生成以後,接下來需要把證書 copy 到真正需要用它的地方。

注意:預設生成的證書都放在安裝目錄下:~/.acme.sh/,請不要直接使用此目錄下的檔案。例如,不要直接讓 nginx/apache 的配置檔案使用這下面的檔案。這裡面的檔案都是內部使用,而且目錄結構可能會變化。

正確的使用方法是使用 --installcert 命令,並指定目標位置,然後證書檔案會被copy到相應的位置,例如:

acme.sh --installcert -d .com \

--key-file /etc/nginx/ssl/.key \

--fullchain-file /etc/nginx/ssl/fullchain.cer \

--reloadcmd "service nginx force-reload"

nginx 的配置 ssl_certificate 使用 /etc/nginx/ssl/fullchain.cer,而非 /etc/nginx/ssl/.cer ,否則 ssl labs 的測試會報 chain issues incomplete 錯誤。

--installcert命令可以攜帶很多引數,來指定目標檔案。並且可以指定 reloadcmd, 當證書更新以後,reloadcmd會被自動呼叫,讓伺服器生效。

值得注意的是,這裡指定的所有引數都會被自動記錄下來,並在將來證書自動更新以後,被再次自動呼叫。

目前證書在 60 天以後會自動更新,你無需任何操作。今後有可能會縮短這個時間,不過都是自動的,你不用關心。

目前由於 acme 協議和 letsencrypt ca 都在頻繁的更新,因此 acme.sh 也經常更新以保持同步。

公升級 acme.sh 到最新版 :

acme.sh --upgrade

如果你不想手動公升級, 可以開啟自動公升級:

acme.sh --upgrade --auto-upgrade

之後, acme.sh 就會自動保持更新了。

你也可以隨時關閉自動更新:

acme.sh --upgrade --auto-upgrade 0

如果出錯, 請新增 debug log:

acme.sh --issue ..... --debug

或者:

acme.sh --issue ..... --debug 2

免費與不免費

邊際成本法則 經濟學裡有乙個法則 在乙個充分競爭的市場裡,產品的長期目標 應該等於該產品的邊際成本。考慮到主機和頻寬成本的不斷下降,今天大部分網際網路產品的邊際成本事實上都是0,也就是說它們的長期 應該定為0。體驗型增值產品 這類產品指的是那些只有等到使用者使用一段時間後才能發現價值的產品。很好的乙...

免費資料庫 免費空間建站

免費資料庫 db4free db4free是乙個國外的遠端資料庫 登入db4free官網註冊賬號並通過郵件啟用之後就可以使用其提供的資料庫服務。主機名 db4free.net 3306 資料庫名 使用者名稱 資料庫密碼都是註冊時自己填寫的。免費空間 中國8u提供免費的無廣告的空間,資料庫要收費。因此...

免費空間2015大主機免費的時代

在當今這個社會中有許許多多的新手站長,他們每天都在盲目的做些什麼呢?這些苦水肯都都是要自己嚥下去的,每個新手站長的經歷幾乎都差不多,大同小異的是幾乎都是一樣的,即便是入門了也是一樣每天都是做同樣的事情幾乎沒有什麼前進。對新手站長來說網域名稱和主機空間是最頭疼的問題,網域名稱和主機空間都是要花錢去購買...