之前把Dify部署到服务器上的时候,通过域名访问总是提示与此站点的链接不安全,即使因为没有ssl证书,访问是通过HTTP访问的,这次就记录一下在这方面的学习吧。

unsecure

什么是HTTP和HTTPS

HTTP(HyperText Transfer Protocol:超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。 简单来说就是一种发布和接收 HTML 页面的方法,被用于在 Web 浏览器和网站服务器之间传递信息。

HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。【参考

HTTPS(Hypertext Transfer Protocol Secure)则是在HTTP后的传输层基础上加了一层安全套接层(secure socket layer),把明文信息进行TLS/SSL协议加密。加密方式也可以分为对称加密和非对称加密。实际上,这两种加密方式都用到了,有关这部分以后有时间就在写吧(包括计算机网络模型和传说中的TCP三次握手啥的)。

在Dify中添加SSL证书

直接看图,参考官方文档

ssl1

提交验证通过后可以下载nginx的密钥包

解压后可以看到四个文件。

去到dify项目docker目录下,把相关参数做改变,如图。

NGINX_SERVER_NAME=xxx
NGINX_HTTPS_ENABLED=true
# if HTTPS_ENABLED is true, you're required to add your own SSL certificates/keys to the `./nginx/ssl` directory
# and modify the env vars below accordingly.
NGINX_SSL_CERT_FILENAME=dify.crt
NGINX_SSL_CERT_KEY_FILENAME=dify.key

由于通过docker直接部署是最方便的方式,和之前帖子的源码部署不太一样,之后也统一采取docker部署的形式。

最后再把之前压缩包里的.crt文件和.key文件丢到./docker/nginx/ssl目录里,重启容器即可。

之后访问就是https了。类似效果如下,