微信小程序开发,接口需要是https的备案域名。
域名已经申请好,icp备案也做完了。
我是用python flask搭的系统,之前是http的。
卡在https 了, 找了几个教程 ,没弄出来,求手把手解决
服务器:阿里云centos 8.1
python 3.8.3
flask:1.1.2
注释中是尝试过的代码,没成功
if __name__ == '__main__':
# app.run(host='0.0.0.0', port=8080, debug=True, ssl_context=('guidaonongye.com_ca.crt', 'guidaonongye.com.key'))
app.run(host='0.0.0.0', port=8080, debug=True)
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/threading.py", line 932, in _bootstrap_inner
self.run()
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/werkzeug/serving.py", line 957, in inner
srv = make_server(
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/werkzeug/serving.py", line 789, in make_server
return ThreadedWSGIServer(
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/werkzeug/serving.py", line 709, in __init__
ssl_context = load_ssl_context(*ssl_context)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/werkzeug/serving.py", line 602, in load_ssl_context
ctx.load_cert_chain(cert_file, pkey_file)
ssl.SSLError: [X509: KEY_VALUES_MISMATCH] key values mismatch (_ssl.c:4012)
这个是站长之家的证书
https://www.bilibili.com/video/BV1P3411h7je?spm_id_from=333.880.my_history.page.click
阿里云的证书也试过,没成功
微信小程序可正常使用该接口
最后需要达到的结果就是微信小程序可以通过https调用这个接口是吧?
可以试一下看下
要弄个ssl证书!
1 需要安装python 的 openssl 的类库,使用pip 安装
pip install pyOpenSSL
2.在 Flask 的代码中可以直接使用
from flask import Flask
app = Flask(__name__)
app.run('0.0.0.0', debug=True, port=8100, 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 365 -in server.csr -signkey server.key -out server.crt
使用配置证书,证书路径自行修改
from flask import Flask
app = Flask(__name__)
app.run('0.0.0.0', debug=True, port=8100, ssl_context=('/Users/kracekumarramaraju/certificates/server.crt', '/Users/kracekumarramaraju/certificates/server.key'))
为什么不使用NGINX转发成https呢?