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]