阿里云如何配置HTTPS

最近公司上线了为APP提供数据服务的restful系统,由于苹果强制要求所有APP的数据接口必须HTTPS,所以也花了半天时间去研究Nginx配置HTTPS方面的一些知识,哎~谁让我是公司首席后端呢!(其实公司就我一个后端…没有运维)

申请证书

在各大服务商(阿里云、腾讯云、七牛云、网易云…等)的服务中都有SSL(CA)证书申请这一功能,虽然大多都要钱,但是也有免费服务,可自行搜索!这里我用的是阿里云的免费证书服务

1.购买免费证书(在阿里云找到CA证书,点击购买然后一直确认即可,直到进入证书控制台)
2.在证书控制台中补全证书信息(输入绑定域名一次只可输入一个域名,如果子域名也需要HTTPS服务,需要重新申请购买证书)
3.填写个人信息(在此项中需要注意域名验证类型这一项,如果你的域名在阿里云的云解析中,可直接勾选DNS以及DNS选项下的授权系统自动添加一条记录,如果域名不在阿里云,需要自己将域名解析到阿里云提供的DNS上)
4.上传相关信息等待审核通过(个人体验:快的一小时,最慢不过两天)

配置证书

证书认证通过后可以在证书控制台下载一系列相关的加密文件(私钥以及证书),其中有两个文件尤为重要,一个key文件和一个pem文件,记得单独保存! 我这里使用的是NGINX,故以下使用NGINX为例

1.将上面保存的key文件和pem文件上传到服务器上Nginx配置文件的同级目录中
2.将80端口重定向到HTTPS

1
2
3
4
5
server {
listen 80;
server_name www.xxx.cn xxx.cn;
rewrite ^(.*) https://$server_name$1 permanent;
}

3.配置443端口并导入HTTPS证书

1
2
3
4
5
6
7
8
9
10
11
12
13
14
server {
listen 443;
server_name www.xxx.cn xxx.cn;
ssl on;
ssl_certificate 111111111.pem;
ssl_certificate_key 111111111.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:8080;
}
}

4.重启Nginx服务

铛铛…没出错的话你应该可以在浏览器上看到小绿锁和HTTPS啦

注意事项

在当前配置过HTTPS服务的域名中如果出现非HTTPS的资源文件,小绿锁和HTTPS会消失哦!如果你的文件放在七牛云或者其他对象存储空间中,记得给这些文件配置自定义域名以及HTTPS哦!