Home  >  Article  >  Backend Development  >  How to start https port in python web.py

How to start https port in python web.py

王林
王林forward
2023-05-17 21:07:071185browse

python web.py starts the https port

Web.py needs an SSL certificate to start the https port. If there is no SSL certificate, it can be generated as follows.

openssl genrsa -des3 -out server.key 1024
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
sudo openssl rsa -in server.key -out server.key

The sample program is as follows:

# -*- coding: utf-8 -*-
"""
Created on Mon May 10 20:37:00 2021
@author: Administrator
"""
import web              #web.py
urls = (
        '/server' , 'server', 
        '/.*', 'notfound'     #localhost:port/其他任意界面,访问notfound类
        )
class MyApplication(web.application):
    def run(self, port=8080, *middleware):
        func = self.wsgifunc(*middleware)
        return web.httpserver.runsimple(func, ('0.0.0.0', port))
class server:
    def __init__(self):
        self.return_msg = {'errorCode': 0, 'msg': '系统正常!'}     
    def POST(self):                    #POST处理方式与GET一致
        # content  = web.input()
        # print('收到消息:', content.key1, content.key2, content.key3)
        x = web.input(myfile={})
        print('xxx: ', x.keys())
        return str(self.return_msg).replace('\'', '\"')
class notfound:
    def GET(self):
        print('--from notfound')
        return '404 not found'
    def POST(self):
        print('--from notfound')
        return '404 not found'
from cheroot.server import HTTPServer
from cheroot.ssl.builtin import BuiltinSSLAdapter
HTTPServer.ssl_adapter = BuiltinSSLAdapter(
        certificate='server.crt',
        private_key='server.key')
if __name__ == "__main__":
    app = MyApplication(urls ,globals())
    app.run(port=443)

Supplementary: python web.py to open https

The first step: Execute the following commands in the shell, answer the questions, and set The password generated certificate contains three files ***.crt, ***.key and ***.csr. I re-command server.crt server.csr server.key

 openssl genrsa -des3 -out server.key 1024
    openssl req -new -key server.key -out server.csr
    openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
    mv server.key myserver.key
    mv server.crt myserver.crt

to start the service. Just enter the following code, where my method module introduced by

from handle import Handle is called in urls (following the example of WeChat public account development, if you are a novice you can see it yourself), at the same time Write the saved file path according to your own

import web
from handle import Handle
from web.wsgiserver import CherryPyWSGIServer
CherryPyWSGIServer.ssl_certificate = "/usr/ssl/server.crt"
CherryPyWSGIServer.ssl_private_key = "/usr/ssl/server.key"
urls = (
    '/wx', 'Handle',
)
if __name__ == '__main__':
    app = web.application(urls, globals())
    app.run()

Then start the service sudo python main.py 443 (where 443 is the port number)

At this time you need to set it yourself before entering ssl Password can be used to open it, but this means that it cannot be hidden in the background.

But in the folder where the certificate is generated, execute sudo openssl rsa -in server.key -out server.key without a password, so that it can be hidden in the background. Execute

nohup python main.py 443 &

The above is the detailed content of How to start https port in python web.py. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:yisu.com. If there is any infringement, please contact admin@php.cn delete