本帖最後由 綠茶妹 於 23-3-5 20:31 編輯
前情提要:
https://www.coco-in.net/thread-156155-1-1.html
這個web server用Sonic寫的
為了要讓它有https比較安全,我去研究方法
以下是正文:
參考官方說明有詳細的步驟。
下面是開程式
- ssl = {
- "cert": "/path/to/fullchain.pem",
- "key": "/path/to/privkey.pem",
- "password": "for encrypted privkey file", # Optional
- }
- app.run(host="0.0.0.0", port=8443, ssl=ssl)
複製代碼
下面是申請憑證用的指令
- sudo certbot certonly --key-type ecdsa --preferred-chain "ISRG Root X1" -d mytrading.coco-in.net
複製代碼
申請時,注意它會問要哪一種方式,請選下面的第一種。(第2種我測試有點怪怪的,第1種的路徑是我要的)
root@Trading:~# sudocertbot certonly --key-type ecdsa --preferred-chain "ISRG Root X1" -dmytrading.coco-in.net Saving debug log to/var/log/letsencrypt/letsencrypt.log
How would you liketo authenticate with the ACME CA? - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1:Spin up a temporary webserver (standalone) 2: Place files inwebroot directory (webroot)
以下是我的測試程式 hello.py
- from sanic import Sanic
- from sanic.response import json
- from sanic.exceptions import NotFound
- app = Sanic(name="pyapp")
- @app.route('/')
- async def test(request):
- return json({'hello': 'world'})
- if __name__ == '__main__':
- app.error_handler.add(
- NotFound,
- lambda r, e: sanic.response.empty(status=404)
- )
- ssl = {
- "cert": "/etc/letsencrypt/live/mytrading.coco-in.net/fullchain.pem",
- "key": "/etc/letsencrypt/live/mytrading.coco-in.net/privkey.pem",
- }
- app.run(host='0.0.0.0', port=443, ssl=ssl)
複製代碼
可以成功的在外網開啟網址
Let's Encrypt 每三個月會到期。
剛查網路上的資料,應該會自動續簽
https://caloskao.org/ubuntu-use- ... tificate-authority/
補充很重要的點,記得要打開防火牆。不然外網會連不上。
請參考這裡的說明
像下面這樣子打開
- $ sudo ufw allow 80/tcp
- $ sudo ufw allow 443/tcp
複製代碼
下面這樣查詢
|