https服务
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/bright69/article/details/82664431
配置完全免费的https服务器
最近想开发一个微信小程序,使用微信官方提供的开发工具,UI部分处理很方便,但涉及调用后台时,后台服务器要求是https的合法域名(如下图)。
开发阶段,不想浪费钱,因此找办法配置https服务器。
当前情况、问题及解决方案
我的后台是centos 7+jdk 1.8+tomcat 9.0.11,位于公司内网,没有公网IP(公司内网的公网出口IP是变化的)、域名和证书。
注:我的服务器的内网IP为:192.168.1.230
那么,为了配置可用的https服务器,我需要解决如下几个问题:
1.我的网站需要一个域名,通过该域名可以访问到我的服务器(类似于花生壳)
2.Https需要的ssl证书
为解决上述问题,准备采用frp来实现免费域名+内网穿透,采用Let’s Encrypt1提供的免费ssl证书
实现思路
1.使用frp申请一个域名,协议:http,用于后面申请ssl证书时使用。
2.使用certbot-auto申请Let’s Encrypt提供的免费证书。
3.申请证书成功后,配置tomcat的https参数使用刚申请的证书
4.调整frp配置,由http改为https。
5.测试
6.配置微信小程序的合法域名
实现步骤
第一步:申请一个免费的域名,且能够支持内网穿透
目前,提供免费域名的站点有很多,但支持内网穿透且免费的不多,我使用的是frp,frp的官网在:https://github.com/fatedier/frp。您可以再此获得程序和相关文档。
frp提供了frps(服务器端)和frpc(客户端)两种部署模式。我要使用的是frpc。
1.确定frps服务器
网上frps服务器有很多,这里提供一个查看的地址:http://www.frps.top/
确定frps服务器时需要注意服务器使用的软件版本号和开放的端口。
软件版本号决定了你要使用的frpc的软件版本(可以从官网下载),您的应用所需的端口号要和站点开放的端口匹配。
我选择的是:http://freenat.win,软件版本:0.16.1
2.从官网下载对应版本的程序
步骤如下:
A:选择版本
B:确定下载目标
3.解压缩
tar -zxvf frp_0.16.1_linux_amd64.tar.gz
解压缩后的文件列表
4.配置frpc
使用frpc,配置文件为frpc.ini。文件中各项参数的说明请见:http://www.chuantou.org/47.html
我的frpc.ini配置
[common]
server_addr = freenat.bid #frps服务器
server_port = 7000 #frps服务器端口
privilege_token = frp888 #客户端连接到FRPS服务端的验证密钥
log_file = frpc.log #日志文件位置和名称
log_level = info #日志等级,trace, debug, info, warn, error
log_max_days = 7 #日志保存天数
login_fail_exit = false #frpc连接frps失败后是否重连,true:重连
protocol = kcp #连接frps服务端的通讯协议,可选:tcp、kcp。具体使用哪个,需要看站点说明
[http_FrpcTest2018] #希望申请的域名[2]
type = http #协议
local_ip = 127.0.0.1 #站点所在服务器的地址[3]
local_port = 8080 #站点使用的端口
use_compression = true #frpc和frps之间的通信是否压缩[4]
use_encryption = true #frpc和frps之间的通信是否加密[4]
custom_domains = FrpcTest2018.freenat.bid #申请的域名
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
其中:
http_FrpcTest20182
local_ip3
use_compression4
use_encryption5
5.启动
# ./frpc -c ./frpc.ini & #后台模式
1
6.测试
浏览器中输入域名“http://FrpcTest2018.freenat.bid”测试
第二步:使用刚刚申请的域名申请证书
我使用CertBot申请Let’s Encrypt免费ssl证书,官网地址:
Let’ Encrypt官网:https://letsencrypt.org/
CertBot官网:https://certbot.eff.org/
1.下载CertBot-auto
# wget https://dl.eff.org/certbot-auto
1
2.修改权限
# chmod a+x certbot-auto
1
3.创建验证所需目录
Let’s Encrypt申请过程中,会访问你的站点,并在站点上写入一些测试文件。这样就要求必须在申请前提前创建这些目录。
目录的位置:站点根目录/.well-known/acme-challenge
# mkdir -p /home/tomcat-9.0.11/webapps/.well-known/acme-challenge
1
4.申请证书
# ./certbot-auto certonly --webroot -w /home/tomcat-9.0.11/webapps/ -d FrpcTest2018.freenat.bid
1
4.1 此后会自动下载安装一堆程序,确认即可。
4.2 登记到期通知或安全警告时使用的邮箱
4.3 同意使用协议
4.4 是否共享邮箱
5.证书
申请成功,证书将存放在/etc/letencrypt/live/站点域名/目录下,如下图:
第三步 配置tomcat的https参数
从Let’s Encrypt申请的证书是pem格式。tomcat使用这种格式的证书需要apr、openssl、tomcat-native等一大堆支持,太麻烦,因此决定将其转换为tomcat使用的JKS格式,如下:
1.转换格式
1.1 pem转换为pfx
# openssl pkcs12 -export -out /home/ssl/FrpcTest2018.pfx -in /etc/letsencrypt/live/frpctest2018.freenat.bid/fullchain.pem -inkey /etc/letsencrypt/live/frpctest2018.freenat.bid/privkey.pem
Enter Export Password: [输入您的密码]
Verifying - Enter Export Password: [输入您的密码]
1.2 pfx转换为jks
# keytool -importkeystore -srckeystore FrpcTest2018.pfx -destkeystore FrpcTest2018.jks -srcstoretype PKCS12 -deststoretype pkcs12
Importing keystore FrpcTest2018.pfx to FrpcTest2018.jks...
Enter destination keystore password: [输入您的密码]
Re-enter new password: [输入您的密码]
Enter source keystore password: [输入您的密码]
Entry for alias 1 successfully imported.
Import command completed: 1 entries successfully imported, 0 entries failed or cancelled
1
2
3
4
5
6
7
8
9
10
11
12
至此,格式成功由pem转换为JKS。
2.拷贝证书到tomcat目录下
# cp /home/ssl/FrpcTest2018.jks /home/tomcat-9.0.11/ssl/.
1
3.配置tomcat的server.xml文件
在文件中增加如下内容:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/home/tomcat-9.0.11/ssl/FrpcTest2018.jks"
keystorePass="您的密码" />
1
2
3
4
5
4.重启tomcat
#./home/tomcat-9.0.11/bin/shutdown.sh
#./home/tomcat-9.0.11/bin/startup.sh
1
2
5.测试
在浏览器中输入https://192.168.1.230:8443,结果页面如下:
注意:
1.此时的地址与申请证书时使用的地址(FrpcTest2018.freenat.bid)不同,因此会出现警告,不用理会。
2.此时http://域名/仍然可以使用
第四步 修改frp配置,使https穿透内网
1.修改frpc.ini
将前面的frpc.ini内容修改为如下:
[common]
server_addr = freenat.bid
server_port = 7000
privilege_token = frp888
log_file = frpc.log
log_level = info
log_max_days = 7
login_fail_exit = false
protocol = kcp
[http_FrpcTest2018]
type = https #修改为https,使得https可以穿透内网
local_ip = 127.0.0.1
local_port = 8443 #https端口
use_compression = true
use_encryption = true
custom_domains = FrpcTest2018.freenat.bid
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2.重启frpc服务
# ps -ef|grep frpc
root 8520 983 1 17:09 pts/0 00:01:11 ./frpc -c ./frpc.ini
root 9173 983 0 19:03 pts/0 00:00:00 grep --color=auto frpc
# kill -9 8520
[1] Killed ./frpc -c ./frpc.ini
# /home/frp/frpc -c /home/frp/frpc.ini &
1
2
3
4
5
6
3.测试
此时,http://FrpcTest2018.freenat.bid/无法访问
而https://FrpcTest2018.freenat.bid/则可以访问
至此,微信小程序要求的合法域名站点侧配置完毕。可以使用小程序账号登录微信公众平台,配置合法域名了。
最后,多啰嗦两句。
第一,到现在,公网可以访问的服务只有https,私网可以访问的包括http和https。
第二,后续如果想完全禁止http访问,在tomcat的server.xml文件中注释掉http端口(8080)即可。
Let’s Encrypt提供的域名是免费的,有效期3个月,允许续期 ↩
freenat.win的域名为二级域名,例如:FrpcTest2018.freenat.bid。最好多写一些,以免与其他申请冲突。 ↩
如果站点在其他服务器上,填写那个服务器的IP地址。注意:站点服务器要和frpc所在的服务器在一个局域网内 ↩
根据frps服务器要求决定 ↩
根据frps服务器要求决定 ↩
————————————————
版权声明:本文为CSDN博主「bright69」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/bright69/article/details/82664431
https服务的更多相关文章
- 使用poco 的NetSSL_OpenSSL 搭建https 服务端,使用C++客户端,java 客户端访问,python访问(python还没找到带证书访问的代码.)
V20161028 由于项目原因,需要用到https去做一些事情. 这儿做了一些相应的研究. 这个https 用起来也是折腾人,还是研究了一周多+之前的一些积累. 目录 1,java client 通 ...
- 网络服务器之HTTPS服务
import ssl, socket, time if __name__ == "__main__": context = ssl.SSLContext(ssl.PROTOCOL_ ...
- 解决Android调用https服务API时出错的问题
今天同事告诉我说他的应用调用我开发的API报异常了,原因跟SSL有关系,因为之前调试一直调用的是HTTP服务API,今天调试HTTPS服务API时报错了,并且找到了一篇文章让我看了一眼,文章中提到了W ...
- 架设证书服务器 及 让IIS启用HTTPS服务(转)
无废话图文教程,教你一步一步搭建CA服务器,以及让IIS启用HTTPS服务. 一.架设证书服务器(CA服务) 1.在系统控制面板中,找到“添加/删除程序”,点击左侧的“添加/删除windows组件”, ...
- 为苹果ATS和微信小程序搭建 Nginx + HTTPS 服务
昨天测试开发微信小程序,才发现微信也要求用HTTPS加密数据,想来是由于之前苹果的ATS审核政策的缘故吧,微信想在苹果上开放小程序必然也只能要求开发者必须使用HTTPS了,于是在服务器上测试安装Ngi ...
- .Net Core和jexus配置HTTPS服务
花了几天时间,看了好多篇博客,终于搞定了网站的HTTPS服务,借此写篇博客,来让有需要的朋友少走弯路. 一.环境介绍 1.Linux下在Docker容器中部署好了一个网站,该网站需要通过外部提供程序访 ...
- Nginx设置Https反向代理,指向Docker Gitlab11.3.9 Https服务
目录 目录 1.GitLab11.3.9的安装 2.域名在阿里云托管,申请免费的1年证书 3.Gitlab 的 https 配置 4.Nginx 配置 https,反向代理指向 Gitlab 配置 目 ...
- 用keytool制作证书并在tomcat配置https服务(二 )
用keytool制作证书并在tomcat配置https服务(一) 双向认证: 我们上边生成了服务端证书,并发送给客户端进行了验证. 双向认证是双向的,因此还差客户端证书. 1.为方便导入浏览器,生成p ...
- 用keytool制作证书并在tomcat配置https服务(一)
https分为单项认证和双向认证. 一般https页面上的访问都是单项认证,服务端发送数字证书给客户端,客户单方面验证.而服务端不做验证. 而双向认证,需要双方都有证书,然后发送给对方进行验证.一般用 ...
- 使用Let's Encrypt搭建永久免费的HTTPS服务
1.概述1.1 HTTPS概述HTTPS即HTTP + TLS,TLS 是传输层加密协议,它的前身是 SSL 协议.我们知道HTTP协议是基于TCP的.简而言之HTTPS就是在TCP的基础上套一层TL ...
随机推荐
- [Vue]vue中路由重定向redirect
1.重定向的地址不需要接收参数 const routes = [ { path: '/', redirect: '/index'}, { path: '/index', component: inde ...
- CCF 201803-1 跳一跳
题目: 问题描述 近来,跳一跳这款小游戏风靡全国,受到不少玩家的喜爱. 简化后的跳一跳规则如下:玩家每次从当前方块跳到下一个方块,如果没有跳到下一个方块上则游戏结束. 如果跳到了方块上,但没有跳到方块 ...
- 1、java集合:java集合详解及类关系图
List和Set继承自Collection接口. Set无序不允许元素重复.HashSet和TreeSet是两个主要的实现类. List有序且允许元素重复,支持null对象.ArrayList.Lin ...
- restTemplate源码解析(五)处理ClientHttpResponse响应对象
所有文章 https://www.cnblogs.com/lay2017/p/11740855.html 正文 上一篇文章中,我们执行了ClientHttpRequest与服务端进行交互.并返回了一个 ...
- 一步一步教你实现iOS音频频谱动画(一)
如果你想先看看最终效果再决定看不看文章 -> bilibili 示例代码下载 第二篇:一步一步教你实现iOS音频频谱动画(二) 基于篇幅考虑,本次教程分为两篇文章,本篇文章主要讲述音频播放和频谱 ...
- 如何让某些用户对Marketing Cloud的contact数据只能实施只读操作
打开maintain business role这个应用: 创建一个新的business role,然后添加下列这几个catalogs: SAP_CEC_BC_MKT_ADM_PC Marketing ...
- 用python在屏幕上输出一个杨辉三角
在屏幕上输出一个杨辉三角,代码如下 def yanghui(): L = [1] while True: yield L L.append(0) L = [L[i - 1] + L[i] for i ...
- Linux命令——mkdir、rmdir
mkdir -p:递归创建目录 -v:每次创建新目录都显示信息 -m:直接指定权限(不使用默认umask演算的那个) [root@51cto /]# mkdir /a/b/c -pv mkdir: c ...
- 【HICP Gauss】数据库 数据库管理(存储过程 函数 对象 近义词 触发器 事务类型)-9
存储过程存储过程在大新数据库系统中,一组为了完成特定功能的SQL语句集 存储在SQL数据库中 优势: SQL进行封装 调用方便 存储过程会进行编译 提升用户执行SQL语句集的速 ...
- ORACLE归档日志满了之后,如何删除归档日志
当ORACLE归档日志满后如何正确删除归档日志 版权声明:本文为博主原创文章,未经博主允许不得转载. 当ORACLE 归档日志满了后,将无法正常登入ORACLE,需要删除一部分归档日志才能正常登入OR ...