我遵循了这些教程。
ServerName server_domain_or_IP
与http://XXX.XXX.XXX.XXX:1234
。我现在拥有的。
http://XXX.XXX.XXX.XXX:1234
转到我的网络应用程序。我需要SSL来访问网络摄像头。https://XXX.XXX.XXX.XXX
进入Apache默认屏幕,这是预期的。https://XXX.XXX.XXX.XXX:1234
转到This site can’t provide a secure connection
的Chrome错误页面。我需要访问https://XXX.XXX.XXX.XXX:1234
出了什么问题,我该怎么办?
编辑,更多细节。
ssh root@xxx:xxx:xxx:xxx
。adduser notalentgeek
。usermod -aG sudo notalentgeek
。su notalentgeek
。notalentgeek
。sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt
。xxx:xxx:xxx:xxx
的IP。sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
并等待一段时间。sudo nano /etc/apache2/conf-available/ssl-params.conf
。复制粘贴教程中的设置( StackOverflow代码格式化不起作用!)。
来自https://cipherli.st/ 的SSLCipherSuite EECDH + AESGCM:EDH + AESGCM:AES256 + EECDH:AES256 + EDH SSLProtocol All -SSLv2 -SSLv3 SSLHonorCipherOrder On
标题始终设置严格传输安全“max-age = 63072000; includeSubdomains” 标题始终设置X-Frame-Options DENY 标题始终设置X-Content-Type-Options nosniff
关闭SSLC压缩 SSLSessionTickets关闭 SSLUseStapling SSLStaplingCache“shmcb:logs / stapling-cache(150000)”
SSLOpenSSLConfCmd DHParameters“/etc/ssl/certs/dhparam.pem”
sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/default-ssl.conf.bak
创建备份。
sudo nano /etc/apache2/sites-available/default-ssl.conf
。
ServerAdmin asd@asd.com ServerName xxx:xxx:xxx:xxx
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
</VirtualHost>
sudo ufw app list
,调整防火墙。我只是放了他们放在那里的任何代码。
sudo ufw status
。sudo ufw allow 'Apache Full'
。sudo ufw delete allow 'Apache'
。sudo ufw status
。sudo a2enmod ssl
。sudo a2enmod headers
。sudo a2ensite default-ssl
。sudo a2enconf ssl-params
。sudo apache2ctl configtest
,我的案子中没有出现任何警告。但是,在教程中它可能会有警告。此命令返回Syntax OK
。https://xxx.xxx.xxx.xxx
有效,但https://xxx.xxx.xxx.xxx:5000
没有(5000是我的Flask端口。)。sudo nano /etc/apache2/sites-available/000-default.conf
Redirect permanent "/" "https://xxx.xxx.xxx.xxx:5000/"
。sudo apache2ctl configtest
会产生Syntax OK
。sudo systemctl restart apache2
。WebSocket传输不可用。安装eventlet或gevent和gevent-websocket以提高性能。 *在http://0.0.0.0:5000/上运行(按CTRL + C退出)
http://xxx.xxx.xxx.xxx:5000/
,其中xxx.xxx.xxx.xxx
是DigitalOcean Droplet的IP,请成功参考我的网络应用。但是,网络应用需要访问网络摄像头和麦克风。sudo apt-get install libapache2-mod-wsgi python-dev
。sudo a2enmod wsgi
。cd /var/www
。sudo mkdir FlaskApp
。cd FlaskApp
。git clone https://github.com/notalentgeek/my_app --depth 1
。cd my_app
。pip3
和virtualenv
。从http
开始运行仍然没问题! sudo nano /etc/apache2/sites-available/FlaskApp.conf
(格式化也无效!)。
ServerName https://xxx.xxx.xxx.xxx:5000/ ServerAdmin asd@asd.com WSGIScriptAlias / /var/www/FlaskApp/flaskapp.wsgi 订单允许,拒绝 允许所有人 别名/ static / var / www / FlaskApp / my_app / static 订单允许,拒绝 允许所有人 ErrorLog $ {APACHE_LOG_DIR} /error.log LogLevel警告 CustomLog $ {APACHE_LOG_DIR} /access.log组合在一起
sudo a2ensite FlaskApp
。
cd /var/www/FlaskApp
。sudo nano flaskapp.wsgi
。sudo service apache2 restart
,教程说这将是一条警告信息。但我没有得到任何。sudo python3 -B my_app.py
会产生这些。WebSocket传输不可用。安装eventlet或gevent和gevent-websocket以提高性能。 *在http://0.0.0.0:5000/上运行(按CTRL + C退出)
http
所有工作,但不是https
。某些代码##
使得StackOverflow中的代码缩进不起作用。这是来自PasteBin的原始文件https://pastebin.com/iShsHjCX。
答案 0 :(得分:0)
这件事解决了我,can you add HTTPS functionality to a python flask web server?。它更像是在Flask方面,而不是其他任何东西。