1.去腾讯云注册帐号,申请免费SSL证书点击直达
申请证书:
输入备案域名的信息
进行文件验证
如果选择DNS验证,就去该域名的管理页面添加DNS解析。
如果选择文件验证,就去该域名指向的web服务器的静态文件目录内新建文件。
具体内容,请参考腾讯云的文档。
申请成功
下载证书,解压
然后,请按照腾讯云的文档对Nginx进行配置。
不过,这里可能会遇到好几个坑!!!
坑1
修改好Nginx配置后使用nginx -t测试配置,如果发现ssl不能识别,极有可能是Nginx在编译的时候没有配置SSL的支持选项。
错误包含此内容:[emerg] unknown directive "ssl",说明需要对Nginx进行重新编译并安装、重启。
到解压的nginx目录下
./configure --with-http_ssl_module
切记不能make install 会覆盖!
make
将原来的nginx备份 备份之前先kill当前正在启动的nginx
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
make之后会在当前目录生成 objs 目录
cp -rfp objs/nginx /usr/local/nginx/sbin/nginx
然后重新启动nginx
/usr/local/nginx/sbin/nginx
坑2
云服务器并没有开启 443端口!
需要去云服务器配置页面修改安全组(阿里云把这个叫做安全组,请根据你的实际情况进行配置)。
开启443端口后,重启一下Nginx,然后查看Nginx是否成功监听了443端口。
lsof -i :443
坑3
如果你要让Nginx强制将HTTP转为HTTPS,也就是将80端口的请求转发至443端口。
你可能需要在监听80端口的server中加入以下配置:
return 307 [https://$server_name$request_uri](https://$server_name$request_uri);
如果你的前端是App而不是Web,建议你测试一下App内的非GET请求是否可以正常识别(因为我这里一直是异常的,最后我选择让HTTP和HTTPS并存)。
参考文章:
腾讯云 - 域名型证书申请流程
Nginx如何安装https-ssl证书
nginx:[emerg]unknown directive "ssl"