基于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加密协议.在信息传输的过程中,信息有可能 ...
随机推荐
- 初次在cmd使用git命令上传项目至github方法(笔记)
在一切开始之前,先推荐一个git简易工具书--Git_Cheat_Sheet,非常适合新手.自行搜索即可,也有热心者提供了中文版. 一.下载 Git 从Git官网下载Git安装包 https://gi ...
- [01]java基础回顾
00 Java语言 由美国SUN公司发明于1995年,是目前业界应用最广泛.使用人数最多的语言,连续多年排名世界第一,可以称之为“计算机语言界的英语”. Java广泛应用于企业级软件开发. ...
- 大数据学习之路-hdfs
1.什么是hadoop hadoop中有3个核心组件: 分布式文件系统:HDFS —— 实现将文件分布式存储在很多的服务器上 分布式运算编程框架:MAPREDUCE —— 实现在很多机器上分布式并行运 ...
- Sublime Text 3 配置java程序运行环境
最近在使用Java时,发现eclipse太耗电了,就想着用sublime text 3,要使用就要先配置,这是这个软件的特性,于是纠缠了一下午,网上流传很多配置运行java的文章,都没找到合适的(主要 ...
- Matlab学习过程中的一些小问题
1.Overload your functions by having variable number of input and output argumernt.Not only can we ov ...
- Collection 的子类 List
List集合的一些使用方法: 一. 声明集合: List<String> list = new ArrayList<String>(); 二.往集合里面添加元素 list.ad ...
- Jquery图片上传功能整理
最近在做一个图片上传到服务器的功能,之前基本没有什么JS的经验,用的也是网上的插件.做了一个星期才把他弄好,现在做一下总结,方便以后查看. 用的插件是WebUploader,上面有很多例子,我找的例子 ...
- 图解kubernetes scheduler基于map/reduce无锁设计的优选计算
优选阶段通过分离计算对象来实现多个node和多种算法的并行计算,并且通过基于二级索引来设计最终的存储结果,从而达到整个计算过程中的无锁设计,同时为了保证分配的随机性,针对同等优先级的采用了随机的方式来 ...
- P1850 换教室 期望dp
P1850 换教室 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 2n2n 节课程安排在 nn 个时间段上.在第 ii(1 \leq ...
- 原生JS在网页上复制的所有文字后面自动加上一段版权声明
不少技术博客有这样的处理,当我们复制代码的时候,会自动加上一段本信息版权为XXXX,这是怎么实现的呢? 其实实现的方式很简单,可以在我的网站页面上绑定一个copy事件,当你复制文章内容的时候,自动在剪 ...