Flask使用https

目录

  1. 1. 概述
  2. 2. 安装pyOpenSSL
  3. 3. 默认证书
  4. 4. 自定义证书
    1. 4.1. Generate a private key
    2. 4.2. Generate a CSR
    3. 4.3. Remove Passphrase from key
    4. 4.4. Generate self signed certificate
    5. 4.5. 使用

概述

Flask在run时可以通过参数ssl_context指定证书来使得运行的web app使用较为安全的协议https.

安装pyOpenSSL

pyOpenSSL使Python的openssl库.
通过pip安装:

pip install pyOpenSSL

默认证书

pyOpenSSL安装完成后就可以使用默认证书将Flask切换为https.

from flask import Flask
app = Flask(__name__)
app.run('0.0.0.0', debug=True, port=5000, ssl_context='adhoc')

ssl_context参数指明使用的证书, adhoc是默认证书, 是pyOpenSSL自带的.

自定义证书

Generate a private key

openssl genrsa -des3 -out server.key 1024

Generate a CSR

openssl req -new -key server.key -out server.csr

Remove Passphrase from key

cp server.key server.key.org
openssl rsa -in server.key.org -out server.key

Generate self signed certificate

openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

days是指证书有效时间, -days 3650即证书有效期是3650天.

使用

from flask import Flask
app = Flask(__name__)
app.run('0.0.0.0', debug=True, port=5000, ssl_context=('server.crt', 'server.key'))

ssl_context中配置的crt和key文件使用绝对路径或相对路径.