摘要:簡介現(xiàn)在已經(jīng)進入的時代證書目前應(yīng)用廣泛發(fā)展迅速相較于明文傳輸?shù)母影踩从捎谄浒踩珜邮褂玫氖且虼艘部梢苑Q為或關(guān)于證書的分類可以參考這篇博客證書需要向國際公認的證書證書認證機構(gòu)申請接下來我們將使用自動化證書管理工具為我們的域名申請頒發(fā)的證書然
簡介
現(xiàn)在已經(jīng)進入 HTTPS 的時代, HTTPS 證書 目前應(yīng)用廣泛, 發(fā)展迅速. 相較于明文傳輸?shù)?HTTP, HTTPS 更加安全.
HTTPS 即 Hypertext Transfer Protocol Secure, 由于其安全層使用的是 TLS/SSL, 因此 HTTPS 也可以稱為 HTTP over TLS 或 HTTP over SSL. 關(guān)于 HTTPS 證書的分類, 可以參考這篇博客
HTTPS 證書 需要向國際公認的證書證書認證機構(gòu) Certificate Authority (CA) 申請.
接下來, 我們將使用自動化證書管理工具 acme.sh 為我們的域名申請 Let"s Encrypt 頒發(fā)的 HTTPS 證書, 然后將其部署在我們的網(wǎng)站上.
本文假設(shè)我們的域名為 www.awesome.com
在前文的基礎(chǔ)上, 我們只需增加 acme.sh 這個工具. 它的中文文檔在這里. 安裝 acme.sh 的過程很簡單, 在 Terminal 中輸入如下命令 acme.sh 即可.
curl https://get.acme.sh | sh
我們可以使用 http 方式來驗證我們對域名的所有權(quán).
如果只申請單域名證書 (Single Domain Certificate, 如單域名 www.awesome.com ), 那么在 Terminal 中運行如下命令即可
acme.sh --issue -d www.awesome.com --standalone
acme 會在當前目錄生成一個驗證文件, 然后運行一個監(jiān)聽 80 端口的 server, 如果 Let"s Encrypt 成功地通過域名下載了這個文件, 就驗證了我們對域名的所有權(quán), 就可以簽發(fā)證書了.
我們也可以運行一個 file server 監(jiān)聽 80 端口
cd ~/webapp python3 -m http.server 80
然后在另一個 Terminal 里輸入如下命令
cd ~ acme.sh --issue -d www.awesome.com --webroot ~/webapp
我們也可以通過 dns 方式來驗證我們對域名的所有權(quán). 如果要申請通配符證書 (Wildcard Certificate, 如 *.awesome.com 形式的通用域名), 則需要用 dns 方式進行驗證.
首先我們在 Godaddy 上申請開發(fā)者 API key & secret, 然后參考 acme.sh 的文檔 readme 和 dnsapi, 執(zhí)行如下命令
export GD_Key="xxxxxxxx" export GD_Secret="yyyyy" acme.sh --issue --dns dns_gd -d "*.awesome.com" -d awesome.com
如果一切順利, 我們會發(fā)現(xiàn) Godaddy 的 DNS txt record 中多了一條 _acme-challenge 記錄. 接下來acme 會先等待 120s 以待新的紀錄生效, 然后通知 Let"s Encrypt 驗證我們對域名的所有權(quán), 驗證通過后, Let"s Encrypt 會為我們簽發(fā)證書.
下一節(jié), 我們將講述如何安裝和部署證書
對于單域名證書, 根據(jù) acme 的文檔, 我們需要執(zhí)行以下命令, 將證書和公鑰放到 ~/ssl/ 文件夾中
acme.sh --installcert -d www.awesome.com --key-file ~/ssl/server.key --fullchain-file ~/ssl/server.cer
對于通配符證書, 操作也是類似的, 把域名換成 "*.awesome.com" 就好了
acme.sh --installcert -d "*.awesome.com" --key-file ~/ssl/server.key --fullchain-file ~/sslwebsite/server.cer
然后, 在之前編寫的 server 中, 我們需要引入證書和公鑰, 從而將明文的消息用 ssl/tls 包裹起來. 根據(jù) Stack Overflow, 這篇文章下面的 Comments, 以及 werkzeug docs, 我們需要在 app.run() 中加上 ssl_context=("~/ssl/server.cer", "~/ssl/server.key") 參數(shù), 再把監(jiān)聽端口改為 443 即可:
# class IndexHandler(...): # ... if __name__ == "__main__": app.add_url_rule("/", view_func=IndexHandler.as_view("index")) context = ("./server.cer", "./server.key") app.run(port=443, host="0.0.0.0", debug=True, threaded=True, ssl_context=context)
至此, 我們的 HTTPS 證書已經(jīng)申請和部署完成了. 但是我們的 server 目前還存在一個問題, 就是只能訪問 https://www.awesome.com, 而原來的 http://www.awesome.com 已經(jīng)無法訪問了, 因為我們的 server 現(xiàn)在只能監(jiān)聽 443 端口而不能監(jiān)聽 80 端口. 下一篇文章, 我們將解決這個問題, 方法是另外寫一個 server 來監(jiān)聽 80 端口, 并通過 redirect 將 http 服務(wù)重定向為 https. 同時, 我們還將學習如何使用 HSTS, 使瀏覽器默認以更安全的 https 的方式訪問我們的網(wǎng)站.
https://imququ.com/post/letse...
https://github.com/Neilpang/a...
https://github.com/Neilpang/a...
https://github.com/Neilpang/a...
https://letsencrypt.org/
https://stackoverflow.com/que...
http://flask.pocoo.org/docs/1...
http://flask.pocoo.org/snippe...
http://werkzeug.pocoo.org/doc...
http://werkzeug.pocoo.org/doc...
https://jjayyyyyyy.github.io/...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/101683.html
摘要:最近博客從阿里云搬遷到騰訊云,也修改了幾個程序上的,順便也啟用了,記錄一下。是按流量計費的,感覺沒必要,所以使用自定義域名了還得充值塊錢如果使用域名的話需要上傳證書和私鑰的內(nèi)容,這里的證書推薦使用騰訊云的免費證書,年有效期,不用頻繁續(xù)簽。 近兩年越來越多的網(wǎng)站開始使用 https,https 是一個基于 http 協(xié)議開發(fā),但是使用了 TLS/SSL 加密了傳輸數(shù)據(jù),所以,簡單點說 h...
摘要:回顧通過前幾篇文章的內(nèi)容我們已經(jīng)搭建了基于框架的一個簡單的應(yīng)用的代碼如下此外我們還為其申請了公網(wǎng)和域名并且部署了的證書現(xiàn)在當我們在瀏覽器地址欄輸入即可訪問我們的網(wǎng)站不過我們的網(wǎng)站目前還存在幾個問題無法訪問每次都需要用戶手動輸入前綴以制定形式 回顧 通過前幾篇文章的內(nèi)容, 我們已經(jīng)搭建了基于 Flask 框架的一個簡單的 Web 應(yīng)用, server.py 的代碼如下 from f...
摘要:當點擊檢查配置之后,如果阿里云能夠正常訪問,則會在左側(cè)給出提示,現(xiàn)在可以返回證書列表,在列表中可以看到當前狀態(tài)為審核中,如下圖審核因為不需要人為干預,所以很快就能下發(fā)證書,筆者下發(fā)證書的時間大約是分鐘左右。 一、背景 筆者所在團隊需要開發(fā)ios的APP,而apptstore應(yīng)用商店審核需要應(yīng)用使用https,所以需要配置https證書,筆者將此次配置的過程與遇到的一些問題記錄下來,方便...
摘要:當點擊檢查配置之后,如果阿里云能夠正常訪問,則會在左側(cè)給出提示,現(xiàn)在可以返回證書列表,在列表中可以看到當前狀態(tài)為審核中,如下圖審核因為不需要人為干預,所以很快就能下發(fā)證書,筆者下發(fā)證書的時間大約是分鐘左右。 一、背景 筆者所在團隊需要開發(fā)ios的APP,而apptstore應(yīng)用商店審核需要應(yīng)用使用https,所以需要配置https證書,筆者將此次配置的過程與遇到的一些問題記錄下來,方便...
閱讀 3364·2021-11-04 16:10
閱讀 3860·2021-09-29 09:43
閱讀 2704·2021-09-24 10:24
閱讀 3354·2021-09-01 10:46
閱讀 2508·2019-08-30 15:54
閱讀 591·2019-08-30 13:19
閱讀 3238·2019-08-29 17:19
閱讀 1060·2019-08-29 16:40