由ssl证书引发的一系列坑

自从接触到线上服务器以来,自认为对服务器的一些操作和命令还比较熟悉,对于一些常见的语言环境的搭建,文件操作,服务器配置等还算有些心得。但恰恰就是因为过于自信,差点导致整个服务器崩溃了。导火索还是一个不起眼的 ssl 安全证书。下面简述一下,我的踩坑之路。

小程序的api数据接口,微信要求必须是要经过认证的https域名地址,因此后台的api接口也必须要是https的形式,昨天,公司一个小程序的数据突然无法访问了。经过排查之后,才发现是 之前的https的证书到期了,因此才导致这个结果。找到病因之后,就要开始寻找治疗方案。于是我去阿里云购买最新的ssl安全证书,并下载下来。然后根据阿里云提供的文档,在服务器上进行证书的安装操作。到这里,一切都安好,似乎顺风顺水,后面也应该是水到渠成。可现实往往就喜欢在这个时候,绊你一脚,让你摔得鼻青脸肿,让你看清残酷的现实。话不多说,进入正题。

在安装证书之前,得先看服务器的类型和webserver,因为服务器是centos和apache,所以我就下载了apache的ssl证书,我按照文档说的,在apache安装目录下新建cert文件夹,并把下载好的证书放到了cert文件夹中,然后在apache的配置文件conf中,将 ssl 模块开启,然后 用 service httpd start
重启了apache ,原以为到这里大功告成,就等着刷新一下小程序,后台数据就来了。想的太美好了,结果小程序还是空白白的一片,仍然没有数据。那时,我怀疑,是不是配置文件的时候,证书的路径引入写错了。于是,我就去检查,结果对了好几遍,都没有错,而且还是用的绝对路径 ,以 / 开头的,按理来说,路径没错,那就有可能配置文件少写了什么,于是,我又对照着阿里云的官方文档看了好几遍,确信没有漏掉什么,那为什么数据,还是获取不到,https证书不起作用呢?于是上网百度了一通,说是可能缺失了一些模块,例如 openssl openssl-devel 这两个和证书有关联的模块,于是我就用 yum 命令的方式,安装了这两个模块。安装好后,我又重启了一下,apache,原以为这下应该没问题了,可小程序依然空白一片,我用微信开发者工具,进行调试,发现不用https 可以获取到数据,那就有可能我在配置文件中,没有将http的请求转换为https的请求,于是,我又将http的请求指向https,又测试了一下,发现依然无法获取到https的数据,这个时候,我就有点郁闷了。不知道从何下手了。呆呆的看着那红色的报错信息。后面,我又把之前的操作重新又走了一遍,发现依然无法获取数据。这个时候,我开始有有点抓狂了。于是又申请了一个证书,再把之前的步骤和操作再走一遍,还是无济于事。此时,我几乎快要放弃了。但我眼睛一瞟,看到 nginx的版本证书,于是我就想,狠一点,把apache停掉,改为nginx来部署证书。于是就是开始了nginx漫长的证书部署之路。
当用命令 service httpd stop 把 apache的服务停掉后,用 yum install nginx 的时候,突然发现 nginx 的源不在 centos 6.6 的源中,于是我又去网上去找 nginx的源,然后更新 yum update,更新过后,再次安装nginx,依然无法安装nginx,这时,我几乎快疯了,apache搞不定,nginx又安装不上,那不是彻底歇菜了。于是我一咬牙,又把yum 给卸载了,重新去安装yum,卸载之后,重新安装yum,需要三个源码包,于是我又去网上百度,把三个源码包的地址搞到了,再安装前两个的时候,很顺畅,但第三个 yum-plugin-fastestmirror 包 无论如何也无法下载,一直报错。提示版本的问题,我想可能是服务的版本低了,而安装的yum版本又高了,于是我就根据服务器的版本修改下载的地址,但结果依然下载不了。逼得我去官方网站,手动把这个镜像包给下载下来了,然后手动一个一个的安装三个包,安装的过程中,又出现pathoy的版本不对,我简直快要疯了,但还是咬牙,重新下载更高版本的pathoy,然后根据网上说的,七个步骤,终于把yum给安装好了,还更新了,此时的我简直不要太佩服我自己,居然真的坚持到看到了曙光的那一刻,当我安装nginx的时候,发现还是安装不了,刚刚看到点希望,又被浇灭了。但好在,只是nginx需要一些依赖,安装就好了。于是,我就安装了 gcc 那几个依赖库,升级了一些依赖库的版本。然后

yum install nginx 

安装成功,再通过命令 service nginx start 启动了nginx,再浏览器中访问,当出现下面这个时,我真的是快要泪流满面了。
在这里插入图片描述
,整整一个晚上,总结起来,基本就干了一件事,停掉apache服务,安装 nginx服务。

第二天,开始在nginx上部署 ssl证书,我按照阿里云提供的文档,小心翼翼的执行着每个步骤,生怕出现昨天晚上apache的那个莫名其妙的错误。可即使我已经十分的用心的走了每个步骤,nginx的配置文件依然无效,无法用 用https进行访问。到头来,和apache一样,白忙活了一场,可我没有放弃,继续找原因,黄天不负有心人,还真让我找到了。我安装的nginx的版本是最新的版本,而nginx的版本总从 1.16 之后,有了大的语法改变,许多的配置文件已经不能再像之前那样写了,最大的坑就是在于阿里云的官方文档的配置文件的语法是 1.16 之前的,这个坑把我几乎整崩溃了。以后,还是不能太相信官方文档,即使是阿里这样的公司。解决这个问题之后,发现还是不起作用,我又去仔细的对比配置文件,看看有没有什么错误,我仔细排查了一下,确信语法上没有问题后,又看了好几遍,依然找不出错误。http 转 https rewrite 重写,证书路径和名称都没有错。可为什么会不起作用呢?我又去网上百度,发现大家说的大多大同小异,都差不多,紧急之中,我突然发现我把80 和443 的两个监听的配置server,写成了 443 在前,80 在后,我尝试把倒过来之后,突然间https就起作用了。
在这里插入图片描述
终于在此刻,我松了一口气。

但我要做的事情远远没有结束,因为后台是php,所以还要添加nginx 对 php 的支持,重新配置域名访问,调整代码位置,然后进行联调。虽然中间出了很多问题,好在最后顺利的完成了任务。恢复了所有的网站和服务器的功能。

总结 : 前后,加起来大概一天的时间,感觉整个人经历了一次痛苦的洗礼,不过却觉得成长了许多。
也许这是一个程序员成长的必经之路。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值