小程序配置个HTTPS的坎坷经历
首先要编写小程序需要的服务器,由于规模很小、功能很简单,所以我就拿出了短小而精悍的ThinkPHP,三下两下就把接口给写了。
然后就是制作小程序,小程序尽管在这几个月内已经更新了无数的新内容(说实话我不知道有什么区别),但是坑依旧在,腾讯所提供的功能bug百出,好不容易算是编写完了小程序的代码,兴高采烈地提交代码准备发布。
坑来了
由于之前都是本地测试,没有去检查https配置,结果准备正式发布的时候却发现一个请求都用不了了,提示:该域名不在允许的范围内。
这时候才想起来服务器是要https的,怎么办呢,只好去配置咯。
客户的服务器是CentOS,实在是惭愧,搞技术八九年了,我还是不会linux系统,进入CentOS空空如也,别说配置SSL了,我连php都不会安装。
和客户协商了下,我先借给他我自己的服务器,我的服务器是Web托管,不需要配置,直接上传php就能跑的那种懒人专版。于是兴高采烈地上传了代码,准备配置SSL证书。
证书是从阿里云购买的(免费的,0元购买,一个账户给20次机会。阿里云传送门)
阿里云免费SSL证书
买完证书后就准备去服务器配置,这时候才想起来我的是Web托管,不是云主机,没法修改Apache配置,找了半天阿里云后台发现我的web托管竟然不支持SSL证书,吐血。
看样子我的服务器也不行,怎么办,客户也没有懂后台的技术,没人会操作CentOS,于是协商后我们悄悄地把服务器重装成了Windows...
讲道理,这是我第一次用WindowsServer2012,还是什么也不会。
服务器
填坑
最丢人的事情来了...我给服务器装了个PhpStudy...众所周知这是用来调试学习的,一般不用在实际服务器。但是我对服务器几乎一无所知,客户要求也不高,能跑起来就行。于是就这么定了,phpstudy。
丢人的phpstudy
然后就是绑定域名,绑定好后发现这么也访问不了,请了n多大神来协助也没找出问题,最后扫描了下该服务器的端口发现...80端口被防火墙阻止了...
于是定义了个防火墙规则,开启了80端口,可以http访问了。
然后要开启FTP,这样才能把代码什么传过去,照着度娘搞了半天总算开启了。然后去配置证书,照着阿里云的提示,把证书文件复制,然后在httpd.conf中开启模块,最后在http-ssl.conf中再配置证书路径。
结果发现http-ssl.conf里面的默认路径全是错的,必须一个个改成真实的路径,坑。
默认路径全都不对
一切就绪,去用https访问站点的时候发现还是不行。
于是怀疑是路径错了,改了一遍又一遍,本机检测443端口也是对的,正当走投无路的时候,一个朋友提醒我既然刚刚80端口没开启,那是不是443...
果然,443端口被防火墙阻止了。开启后,终于能使用HTTPS正常访问接口。
填完一坑又来一坑
本以为完事儿了,真实测试的时候问题又来了:文件是储存在七牛的,上传有https没问题,下载文件的时候才发现七牛默认不是https的,想要https得充钱...客户不乐意了,没办法,只能再改!
于是又把上传和下载都改成了客户自己的服务器,这样终于实现了所有接口都是https了。虽然很不赞成把文件直接放在代码服务器,但是起码解决了客户的燃眉之急。
写在最后
前后整整忙活了两天,终于搞定了微信的坑。
从个人角度来说,现在https没有普及,想要搞一个https实在是太复杂,尤其是对于我们这种服务器渣渣,小程序的开发成本一下子大了很多,难怪小程序一直火不起来[手动滑稽]...不说它实际价值,就从开发角度,密密麻麻全是坑啊。
当然了,整个流程归根到底还是因为我和客户都没有丰富的服务器经验,才导致出现了这么多问题,看样子是得恶补下服务器知识了,走,玩CentOS去啦!
总结Tip:
域名必须备案七牛下载服务器http不免费配置ssl证书的时候注意配置文件目录注意防火墙开启443端口