綠茶妹 發表於 23-3-4 23:40

Sonic web server配置SSL證書 (以支援https)

本帖最後由 綠茶妹 於 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.netSaving 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

下面這樣查詢
sudo ufw status






頁: [1]
查看完整版本: Sonic web server配置SSL證書 (以支援https)