起因
学校网络安全整改,要求所有网站部署SSL证书。我负责的项目WEB环境使用的是宝塔,其实宝塔本身是配有部署SSL证书功能的,在学校的服务器试了几次后无果,只能另寻出路。而且,学校的服务器和网络环境不同于市面上的一般情况,对服务器内部的操作我倒是拥有绝对权限,可是涉及到网络、端口,需要各种协同沟通,校园网—你们都懂得!
生成密钥
- 安装OpenSSL
创建证书私钥key文件
1
openssl genrsa -out <server>.key 2018
生成证书请求csr文件
1
openssl req -new -key <server>.key -out certreq.csr
然后将生成的证书请求文件csr提交给数字证书颁发机构,这个过程由网络中心老师负责,然后将服务器证书文件返回给我。
部署
在宝塔环境下部署很是很容易的,粘贴key文件和pem文件后即可生成。然后将生成的私钥文件又发给网络中心的老师,不详其具体做了些什么。然后通知我HTTPS访问出现502错误。用IP访问,是程序的HttpError错误。
分析
看到是HttpError的错误,我以为是Nginx的配置问题。然后围绕“HTTPS Nginx 502”这几个关键词开始谷歌、stackoverflow等等,搞了半天无果。然后又去宝塔官网论坛、Q群问了一番,得到了几个不错的反馈:
- 访问静态资源是否正常,如果正常说明是程序有问题,准确的说就是配置的问题
结果:IP访问正常,域名访问不正常 - 写一个简单的测试脚本,运行看是否正常
结果:IP访问正常,域名访问不正常
这就奇怪了。。。ip访问测试脚本没问题,说明PHP程序没有问题。那访问首页为啥报错呢?然后访问后台登录页面,OK。原来是后台设置的域名和访问地址必须保持一致才可以正常访问。登录后台都设置成IP地址,果然访问都没有问题了,只是HTTPS没有生效。
既然IP地址访问没有问题,那就是证书配置或者网络中心那边配置出问题了!转了一圈回到原点!
解决
6月4号,将上述情况汇报给网络中心老师。6月5号,老师通知我,问我做了哪些修改,为什么可以访问了,可事实上我什么都没做。。。