基于HTTPS的接口测试——nginx配置SSL
基于HTTPS的接口测试——nginx配置SSL
1. 背景
年前团队成员zjq在做智能设备箱运维系统的微信小程序,主要实现智能设备箱列表展示,单台监测展示,门禁开关控制等功能。做着做着,发现微信小程序的后台接口,都需要https的安全链接,IP地址+端口号无效。对,腾讯为了使得小程序的安全,使用了https规范。
2. 所需环境与域名备案解析
2.1 云服务器
这里推荐购买腾讯云服务器或者阿里云服务器,因为他们的服务器会配备一个公网IP,比较地适合做微信后台接口的地址。当然,如果你所装的宽带有购买了运营商的公网IP地址,只需要一台电脑,或者服务器就可以使用了。原理都一样。云服务器一个优点就是切换安装操作系统非常方便,而且可以瞬间完成,比如windows server跟linux之间的切换。
本文采用腾讯云云服务商:

云服务器配置:

这里需要注意的是,可以选择活动期去购买,不然价格还挺贵的。
2.2 域名
域名也可以到阿里云或者腾讯云处购买,因为他们都带有备案功能,而且碰上搞活动也不贵。
本文采用腾讯云云服务商:

需要注意的是,这里域名跟IP地址的购买必须保持一致,统一在阿里云或者腾讯云。因为备案第一步需要先经过云服务商的审核,而每个不同的云服务商的审核规则都不相同。
2.3 SSL证书
HTTPS还需要SSL证书,在如下路由可以申请到免费的SSL证书。

2.3.1 点击申请免费的SSL证书

2.3.2 选择SSL服务商

2.3.3 SSL信息填写

2.3.4 域名身份验证

2.3.5 申请成功

2.3.6 收费SSL证书
商用SSL证书根据功能不同,收费不同。

2.4 网站备案
2.4.1 备案流程

- 第一步首先进过腾讯云服务商审核,第二部腾讯云服务商审核通过之后会提交给管局审核;
- 审核时间与地区相关,浙江地区时间大概为两周左右;
2.4.2 备案通过
备案通过之后的状态显示为绿色的正常。

2.5 域名解析
在域名解析这一步我们将通过配置云服务商的DNS服务器完成IP地址跟域名的绑定。
2.5.1 点击云解析或者域名管理

2.5.2 点击解析

2.5.3 添加www一条记录

3.nginx配置SSL
找到nginx.conf配置文件,添加如下配置。
3.1 配置HTTP ssl 443端口号,html文件夹下的index.html是其访问主页
#http节点中可以添加多个server节点
server{
#监听443端口
listen 443 ssl;
#对应的域名,改成自己的域名就可以了
server_name dataxxxx.tech;
#从腾讯云获取到的第一个文件的全路径
ssl_certificate cert/1_www.dataxxxx.tech_bundle.crt;
#从腾讯云获取到的第二个文件的全路径
ssl_certificate_key cert/2_www.dataxxxx.tech.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
#因为使用的是静态的html网页,所以直接使用location就可以完成了。
location / {
#文件夹
root html;
#主页文件
index index.html;
}
}
3.2 配置后台数据的反向代理接口
location /newApi/
{
rewrite ^/newApi/(.*)$ /$1 break; #所有对后端的请求加一个api前缀方便区分,真正访问的时候移除这个前缀 #
proxy_pass http://localhost:9088;
}
3.3 域名,IP地址跳转
配置http域名,IP地址跳转到https 443接口
server{
listen 80;
server_name 148.xx.xxxx.142;
rewrite ^/(.*)$ https://dataxxxx.tech:443/$1 permanent;
}
server{
listen 80;
server_name www.dataxxxx.tech;
rewrite ^/(.*)$ https://dataxxxx.tech:443/$1 permanent;
}
3.4 所有配置代码详见如下
#http节点中可以添加多个server节点
server{
#监听443端口
listen 443 ssl;
#对应的域名,改成自己的域名就可以了
server_name dataxxxx.tech;
#从腾讯云获取到的第一个文件的全路径
ssl_certificate cert/1_www.dataxxxx.tech_bundle.crt;
#从腾讯云获取到的第二个文件的全路径
ssl_certificate_key cert/2_www.dataxxxx.tech.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
#因为使用的是静态的html网页,所以直接使用location就可以完成了。
location / {
#文件夹
root html;
#主页文件
index index.html;
}
location /newApi/
{
rewrite ^/newApi/(.*)$ /$1 break; #所有对后端的请求加一个api前缀方便区分,真正访问的时候移除这个前缀 #
proxy_pass http://localhost:9088;
}
}
server{
listen 80;
server_name 148.xx.xxxx.142;
rewrite ^/(.*)$ https://dataxxxx.tech:443/$1 permanent;
}
server{
listen 80;
server_name www.dataxxxx.tech;
rewrite ^/(.*)$ https://dataxxxx.tech:443/$1 permanent;
}
4. postman接口测试
4.1 https登录接口测试

4.2 443端口号省略
基于HTTPS的443端口就像基于http的80端口一样,可省略。详见如下例子

5.小结
本文主要总结了后台API接口暴露在公网IP或者域名上的基于SSL证书的一种HTTPS的加密方式,主要基于nginx配置。有任何疑问,我会耐心解答;有任何更好的建议或者解决方案,也请一并提出,好让我有所提高。
基于HTTPS的接口测试——nginx配置SSL的更多相关文章
- Centos7.2下Nginx配置SSL支持https访问(站点是基于.Net Core2.0开发的WebApi)
准备工作 1.基于nginx部署好的站点(本文站点是基于.Net Core2.0开发的WebApi,有兴趣的同学可以跳http://www.cnblogs.com/GreedyL/p/7422796. ...
- Windows下Nginx配置SSL实现Https访问(包含证书生成)
Vincent.李 Windows下Nginx配置SSL实现Https访问(包含证书生成) Windows下Nginx配置SSL实现Https访问(包含证书生成) 首先要说明为什么要实现https ...
- nginx配置ssl加密(单双向认证、部分https)
nginx配置ssl加密(单双向认证.部分https) nginx下配置ssl本来是很简单的,无论是去认证中心买SSL安全证书还是自签署证书,但最近公司OA的一个需求,得以有个机会实际折腾一番.一开始 ...
- [转帖]nginx配置ssl加密(单/双向认证、部分https)
nginx配置ssl加密(单/双向认证.部分https) https://segmentfault.com/a/1190000002866627 nginx下配置ssl本来是很简单的,无论是去认证 ...
- linux下nginx配置ssl证书(https)
nginx配置ssl很简单,首先需要两个文件,一个是crt文件,另一个是key文件,如下所示: xxx.crt; #(证书公钥)xxx.key; #(证书私钥) 把这两个文件放到nginx的conf ...
- Nginx - 配置 SSL证书
nginx 配置 ssl 证书: 在nginx配置目录创建 cert目录 放置 SSL 的证书秘钥: 也可以使用配置绝对路径 /file/cert/cert.pem server { listen s ...
- nginx配置ssl双向证书
CA根证书制作 # 创建CA私钥 openssl genrsa -out ca.key 2048 #制作CA根证书(公钥) openssl req -new -x509 -days 3650 -key ...
- nginx 配置 ssl 双向证书
CA 根证书制作 # 创建 CA 私钥 openssl genrsa -out ca.key 2048 #制作 CA 根证书(公钥) openssl req -new -x509 -days 3650 ...
- 购买https证书以及nginx配置https
文章来源 运维公会:购买https证书以及nginx配置https 1.https的作用 https的全名是安全超文本传输协议,是在http的基础上增加了ssl加密协议.在信息传输的过程中,信息有可能 ...
随机推荐
- Springboot Jackson配置根本方案, 日期格式化, 时区设置生效
当项目集成配置的功能越来越多, 说不准哪个配置就影响到了什么. 比如你启用了EnableMvC, 默认配置文件配置的一些文件就失效了. 虽然约定大于配置,让springboot可以极简化构建, 但不熟 ...
- 手抖把Python2.7卸载了,导致了自己的yum不可用以及yum因python版本无法使用的问题
摘要: 从标题就能看到我有多心如死灰了,简单介绍下我是如何自残的过程. ①首先因为需要部署爬虫程序,然后安装Python3. ②Python3系列和Python2系列版本不向下兼容,所以我就卸载了机器 ...
- Educational Codeforces Round 80 D E
A了三题,rk1000左右应该可以上分啦,开
- docker使用阿里云加速器
1 登录阿里云获得地址 登录https://cr.console.aliyun.com ,点击"镜像加速器",会给我一个地址. 2 写入/etc/docker/daemon.jso ...
- Maven 基础(二) | 解决依赖冲突的正确姿势
一.依赖原则 假设,在 JavaMavenService2 模块中,log4j 的版本是 1.2.7,在 JavaMavenService1 模块中,它虽然继承于 JavaMavenService2 ...
- 一文搞定Spring Boot + Vue 项目在Linux Mysql环境的部署(强烈建议收藏)
本文介绍Spring Boot.Vue .Vue Element编写的项目,在Linux下的部署,系统采用Mysql数据库.按照本文进行项目部署,不迷路. 1. 前言 典型的软件开发,经过" ...
- MongoDB 官方文档中的 aggregate 例子当中的 $sum: 1 , 这里的 1 起什么作用?
按照 group 的条件, 满足一条就加1, db.getCollection('user_login_info').aggregate( [ {$project:{account_id:" ...
- CentOS 7.2 搭建Jenkins
1,准备阶段 jenkins下载 https://jenkins.io/download/ 这里我们选择稳定版本 (本文介绍的是通过tomcat来部署的,由于jenkins内部也集成了容器,也可直接通 ...
- 自定义博客cnblogs样式的必备前端小知识——js、jq
JQ.JS相关小知识 任意元素自动点击 $(".editicon").trigger('click') 添加子元素 append() - 在被选元素的结尾插入内容 prepend( ...
- MTV
M:模型 models.py T:模板 html C:控制 urls.py 和 views.py 与MVC类似