CherryPy - implantação de aplicativo
Este capítulo se concentrará mais no SSL do aplicativo baseado em CherryPy habilitado por meio do servidor HTTP embutido CherryPy.
Configuração
Existem diferentes níveis de definições de configuração necessários em um aplicativo da web -
Web server - Configurações vinculadas ao servidor HTTP
Engine - Configurações associadas à hospedagem do motor
Application - Aplicativo que é usado pelo usuário
Desdobramento, desenvolvimento
A implantação do aplicativo CherryPy é considerada um método muito fácil, onde todos os pacotes necessários estão disponíveis no caminho do sistema Python. Em um ambiente hospedado na web compartilhado, o servidor web residirá no front end, o que permite que o provedor de hospedagem execute as ações de filtragem. O servidor front-end pode ser Apache oulighttpd.
Esta seção apresentará algumas soluções para executar um aplicativo CherryPy por trás dos servidores web Apache e lighttpd.
cherrypy
def setup_app():
class Root:
@cherrypy.expose
def index(self):
# Return the hostname used by CherryPy and the remote
# caller IP address
return "Hello there %s from IP: %s " %
(cherrypy.request.base, cherrypy.request.remote.ip)
cherrypy.config.update({'server.socket_port': 9091,
'environment': 'production',
'log.screen': False,
'show_tracebacks': False})
cherrypy.tree.mount(Root())
if __name__ == '__main__':
setup_app()
cherrypy.server.quickstart()
cherrypy.engine.start()
SSL
SSL (Secure Sockets Layer)pode ser compatível com aplicativos baseados em CherryPy. Para ativar o suporte SSL, os seguintes requisitos devem ser atendidos:
- Ter o pacote PyOpenSSL instalado no ambiente do usuário
- Ter um certificado SSL e uma chave privada no servidor
Criação de um certificado e uma chave privada
Vamos lidar com os requisitos de certificado e chave privada -
- Primeiro, o usuário precisa de uma chave privada -
openssl genrsa -out server.key 2048
- Esta chave não é protegida por senha e, portanto, tem uma proteção fraca.
- O seguinte comando será emitido -
openssl genrsa -des3 -out server.key 2048
O programa exigirá uma senha longa. Se sua versão do OpenSSL permitir que você forneça uma string vazia, faça isso. Caso contrário, insira uma frase-senha padrão e, em seguida, remova-a da chave gerada da seguinte forma -
openssl rsa -in server.key -out server.key
- A criação do certificado é a seguinte -
openssl req -new -key server.key -out server.csr
Este processo irá solicitar que você insira alguns detalhes. Para fazer isso, o seguinte comando deve ser emitido -
openssl x509 -req -days 60 -in server.csr -signkey
server.key -out server.crt
O certificado recém-assinado será válido por 60 dias.
O código a seguir mostra sua implementação -
import cherrypy
import os, os.path
localDir = os.path.abspath(os.path.dirname(__file__))
CA = os.path.join(localDir, 'server.crt')
KEY = os.path.join(localDir, 'server.key')
def setup_server():
class Root:
@cherrypy.expose
def index(self):
return "Hello there!"
cherrypy.tree.mount(Root())
if __name__ == '__main__':
setup_server()
cherrypy.config.update({'server.socket_port': 8443,
'environment': 'production',
'log.screen': True,
'server.ssl_certificate': CA,
'server.ssl_private_key': KEY})
cherrypy.server.quickstart()
cherrypy.engine.start()
A próxima etapa é iniciar o servidor; se você for bem-sucedido, verá a seguinte mensagem na tela -
HTTP Serving HTTPS on https://localhost:8443/