在DigitalOcean中为我的Web应用程序安装HTTPS,`https:// XXX.XXX.XXX.XXX`是可以的,但没有,`https://XXX.XXX.XXX.XXX:1234`

时间:2017-04-18 19:33:02

标签: https ssl-certificate digital-ocean self-signed

我遵循了这些教程。

我现在拥有的。

  • 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附加到Droplet中的全新安装(Ubuntu LTS 16.04)。
  • ssh root@xxx:xxx:xxx:xxx
  • adduser notalentgeek
  • usermod -aG sudo notalentgeek
  • su notalentgeek
  • 现在我在新创建的用户notalentgeek
  • 进入“如何在Ubuntu 16.04中为Apache创建自签名SSL证书”教程。
  • sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt
  • 在表格中,我将所有内容都视为“asd”(在我看来,任何事情都是这些问题)。除了“公共名称(例如服务器FQDN或您的名字)[]:”是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/

    https://raymii.org/s/tutorials/Strong_SSL_Security_On_Apache2.html

    SSLCipherSuite EECDH + AESGCM:EDH + AESGCM:AES256 + EECDH:AES256 + EDH SSLProtocol All -SSLv2 -SSLv3 SSLHonorCipherOrder On

    暂时禁用预加载HSTS。您可以使用包含

    的注释掉的标题行 如果您了解其含义,请

    “preload”指令。

    标题始终设置Strict-Transport-Security“max-age = 63072000; includeSubdomains; preload”

    标题始终设置严格传输安全“max-age = 63072000; includeSubdomains” 标题始终设置X-Frame-Options DENY 标题始终设置X-Content-Type-Options nosniff

    需要Apache> = 2.4

    关闭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
  • 这是从我的Flask App发布的。
  

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,请成功参考我的网络应用。但是,网络应用需要访问网络摄像头和麦克风。
  • 按照其他教程https://www.digitalocean.com/community/tutorials/how-to-deploy-a-flask-application-on-an-ubuntu-vps
  • 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
  • 正在安装,pip3virtualenv。从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

1 个答案:

答案 0 :(得分:0)

这件事解决了我,can you add HTTPS functionality to a python flask web server?。它更像是在Flask方面,而不是其他任何东西。