【从零建站4/n】错题集(已解决):腾讯云服务器apache2、flask从http升https;访问时浏览器报此站点连接不安全ERR_SSL_PROTOCOL_ERROR

1 篇文章 0 订阅
1 篇文章 0 订阅

腾讯云http升到https

站点在这里,项目已上传至Git。随时都在掰弄,不保证能登录/手动滑稽

缘由

因为用了PWA,上面的”不安全“提示就让人非常不爽,而且据说也会限制PWA的功能,因此决定把服务器升到https
在这里插入图片描述

免费获取ssl

上腾讯云买就完了,选择域名型免费版,反正不要钱
在这里插入图片描述

下载证书,由于我使用的是apache2建站,因此选取其中apache文件夹中的三个文件传到服务器

手动安装

直接参考这位大佬的文章;一切都非常美好。

> ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/000-default-ssl.conf

建立ssl专用配置文件到配置文件实装文件夹的软链接
实际上也可以直接用apache提供的命令a2ensite default-ssl.conf,效果一样

> sudo vim /etc/apache2/site-available/default-ssl.conf

修改如上文件中的如下配置;myWebsite修改成你的域名,地址指定到你放置三个密钥文件的地址;我把这三个密钥文件放在了/etc/ssl/certs/目录下

> ServerName www.<myWebsite>.com
> SSLCertificateFile      /etc/ssl/certs/2_www.<myWebsite>.com.crt
> SSLCertificateKeyFile   /etc/ssl/certs/3_www.<myWebsite>.com.key
> SSLCertificateChainFile /etc/ssl/certs/1_root_bundle.crt

修改完成后加载ssl并重启apache2

> sudo a2enmode ssl
> sudo service apache2 restart

智障错误

结果浏览器时报错ERR_SSL_PROTOCOL_ERROR,检查了一圈,发现我犯了一个非常愚蠢的错误,配置文件的软链写错了
在这里插入图片描述
在把/etc/apache2/sites-available/default-ssl.conf 映射到sites-enabled文件夹时不知道哪里写错了反正就是没连上,回头看感觉应该是用了相对地址,而软链必须写绝对地址。删了重写一次

ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/000-default-ssl.conf

成功连上
在这里插入图片描述
PWA也没有不安全提示了
在这里插入图片描述

强制http跳转https的问题

在照着大佬们强制http链接rewrite到https过程中碰到的不可复现的错误

  1. 首先修改/etc/apache2/sites-available/000-default.conf,添加这三段指定任何网址重定向至https
    在这里插入图片描述
    在已经enable rewrite的前提下重启apache2,跳转https失败

    ~ sudo a2enmode rewrite
    ~ sudo service apache2 restart
    
  2. 据说需要将/etc/apache2/apache2.conf中的AllowOverride的None改为ALL,原理未知,因为也有人说不改也行
    在这里插入图片描述
    实测后依然跳转https失败

  3. 这位大佬这里看到的在对000-default.conf的修改中需要指定重定向301
    在这里插入图片描述
    实测成功跳转!

  4. 但是等我把AllowOverride还原成None,[L, R=301]还原成[L,R],即还原到第一步的状态的时候,又可以成功跳转了,无法理解。(21.03.16.PS:现在可以理解了,因为PWA的本地缓存功能,当从http成功跳转过一次https之后,以后无论如何修改服务器配置,只要用原来的浏览器再次访问,则都会在本地缓存的作用下直接被传送到https,即使服务器apache关闭了也能跳,尴尬了)

Flask从https调用

  1. 完成后发现服务器端用flask写的http接口不接受这个https页面的请求,会报一个因为安全因素导致request blocked的错,所以需要在后端flask.py中同样指定密钥,并将接口请求url改成”https://“开头
    # flask.py文件中最后run的部分添加ssl_context参数
    # 指向与上文相同的地址下的(2_crt,3_key)两个文件
    # 文件1_root_bundle.crt不需要
    if __name__=='__main__':
    app.run(
    	host='0.0.0.0', 
    	port=5000
    	ssl_context=(
    		'/etc/ssl/certs/2_www.<myWebsite>.com.crt',
    		'/etc/ssl/certs/3_www.<myWebsite>.com.key'
    	) # <myWebsite>替换为自己的域名
    )
    
    

彻底完成

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以按照以下步骤在腾讯云服务器上部署 Flask 应用: 1. 购买腾讯云服务器:登录腾讯云官网,选择适合你需求的服务器实例,并购买。 2. 登录服务器:使用 SSH 客户端(如 PuTTY)连接到你的服务器腾讯云会为你提供登录信息,包括 IP 地址、用户名和密码。 3. 更新服务器:登录成功后,首先更新服务器上的软件包和依赖项,可以运行以下命令: ``` sudo apt update sudo apt upgrade ``` 4. 安装 Python:检查服务器上是否已安装 Python。如果没有,请使用以下命令安装: ``` sudo apt install python3 ``` 5. 创建虚拟环境:在服务器上创建一个虚拟环境来隔离项目的依赖项。可以使用以下命令: ``` python3 -m venv myenv ``` 6. 激活虚拟环境:激活虚拟环境以开始在其中安装和运行应用程序。运行以下命令: ``` source myenv/bin/activate ``` 7. 安装 Flask 和其他依赖项:在虚拟环境中运行以下命令来安装 Flask 和其他需要的依赖项: ``` pip install flask pip install <其他依赖项> ``` 8. 编写 Flask 应用程序:在服务器上创建 Flask 应用程序的主文件,例如 `app.py`,并在其中编写代码。 9. 运行 Flask 应用程序:使用以下命令在服务器上运行 Flask 应用程序: ``` flask run --host=0.0.0.0 ``` 10. 配置防火墙:确保服务器的防火墙允许来自外部的 HTTP 请求访问 Flask 应用程序所使用的端口(默认为 5000)。 11. 测试应用程序:在浏览器访问服务器的公共 IP 地址,加上 Flask 应用程序的路由路径,检查应用程序是否正常运行。 请注意,这只是一个基本的部署过程示例,实际情况可能会有所不同。你可能还需要配置域名HTTPS、数据库连接等其他方面的内容,以适应你的具体需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值