赞
踩
站点在这里,项目已上传至Git。随时都在掰弄,不保证能登录/手动滑稽
因为用了PWA,上面的”不安全“提示就让人非常不爽,而且据说也会限制PWA的功能,因此决定把服务器升到https
上腾讯云买就完了,选择域名型免费版,反正不要钱
下载证书,由于我使用的是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链接rewrite到https过程中碰到的不可复现的错误
首先修改/etc/apache2/sites-available/000-default.conf,添加这三段指定任何网址重定向至https
在已经enable rewrite的前提下重启apache2,跳转https失败
~ sudo a2enmode rewrite
~ sudo service apache2 restart
据说需要将/etc/apache2/apache2.conf中的AllowOverride的None改为ALL,原理未知,因为也有人说不改也行
实测后依然跳转https失败
在这位大佬这里看到的在对000-default.conf的修改中需要指定重定向301
实测成功跳转!
但是等我把AllowOverride还原成None,[L, R=301]还原成[L,R],即还原到第一步的状态的时候,又可以成功跳转了,无法理解。(21.03.16.PS:现在可以理解了,因为PWA的本地缓存功能,当从http成功跳转过一次https之后,以后无论如何修改服务器配置,只要用原来的浏览器再次访问,则都会在本地缓存的作用下直接被传送到https,即使服务器apache关闭了也能跳,尴尬了)
# 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>替换为自己的域名
)
彻底完成
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。