1、开启https,关闭http:
在app.conf中设置即可,相关设置项如下:
EnableHTTP=false
httpport = 8080
EnableHTTPS=true
EnableHttpTLS = true
HttpsPort = 443
HTTPSCertFile = "server.crt"
HTTPSKeyFile = "server.key"
https端口可以更改,HTTPSCertFile和HTTPSKeyFile为ssl证书相关配置。
2、如何获取SSL证书?
提供两种方法:
(1)使用Openssl制作。
(2)申请或购买SSL证书。BAT等大厂都有免费1年的证书可以申请,我自己是在百度云上申请的SSL证书。
3、Openssl制作SSL证书
windows和linux上均可以操作。制作证书前,确保系统有安装Openssl。centos上安装openssl较简单,所以我是直接在centos上制作的证书,拿到windows上也可以直接使用。
(1)生成私钥:openssl genrsa -des3 -out server.pass.key 2048
(2)生成CSR(证书签名请求):openssl req -new -key server.key -out server.csr -config openssl.cfg
根据提示输入相关信息,Common Name可以填localhost
(3)删除私钥中的密码:openssl rsa -in server.key -out server.key
(4)生成自签名证书:openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
证书制作完成,只需将server.key和server.crt拷贝至工程文件下(与可执行文件同级目录)即可。启动beego,即可使用https访问接口。
4、百度云SSL证书
百度云申请SSL证书,需要先注册域名,并通过备案(时间有点久)。具体申请流程可参考百度云官网。这里讲一下证书申请下来后,怎么在beego项目中使用的问题。
从百度云申请免费SSL证书后,下载解压(0908)后有三个文件:
*.cer 、*.key 、*.crt
(1)私钥(*.key)可以直接使用,为方面起见,重命名.key文件为: server.key
(2)开始不太明白.cer文件的用处,直接忽略了,将*.crt文件重命名为server.crt后,
直接将server.key和server.crt拷贝至beego工程项目下(与可执行文件输出文件同目录),
提示出错: ListenAndServeTLS: tls: private key does not match public key
(3)查看了百度云官方描述SSL证书部署,添加证书时,将解压后的.cer文件和.crt文件合并后,重命名为server.crt后,
拷贝至工程目录下,运行正常。
PS:合并顺序不能错,.cer文件在前,回车后,拷贝.crt文件合并。(不要留空行)
使用百度云SSL证书后,在浏览器访问api接口时,出现:
显示的是https安全。
而使用Openssl生成的证书,用浏览器访问,显示:
需要说明的是:百度云生成的SSL证书使用域名申请的,尝试过将百度生成的SSL证书拷贝至windows内网环境下使用,还是会提示https不安全。
查看了一下百度云的部署证书说明:
总结:局域网及测试环境下使用https,可以直接使用Openssl生成SSL证书。如在实际生产环境部署,出于安全考虑,还是购买SSL证书为好。
最后提一句,在postman上使用https测试api接口时,需要在postman上配置ssl相关证书。