前情提要

最近在接wx小游戏的sdk, 消息推送需要在wx端配置https开头的地址。 我本地开了一个http服务,我的ip为192.168.40.39, 监听端口 8091。想要达到的效果是,外部浏览器输入 https://myproject.com/xx, 实际上会转成 http://192.168.40.39:8091/xx。 以下是我的解决办法

  • 花生壳穿透
  • 证书+web服务器

花生壳穿透

  1. 新注册送每月1G流量, 带宽 1Mbps, 两个映射

  2. 下载花生壳工具,注册账号, 登录

  3. 花生壳对外映射需要注册一个域名关联, 首次注册可能要付费6元,并且实名认证,得到一个关联本机的域名

  4. 点击自定义映射,可以有 tcp,udp,http, https, Socks5, 配置好 内网主机和内网端口

  5. 结束。 简单易上手, 嘎嘎好用

         图1: 花生壳映射成功

证书+web服务器

.... 听说腾讯云、华为云、ZeroSSL、Let’s Encrypt可以薅到免费的可信任证书, 试试

自签证书生成

  1. 下载openssl, 官网的是要收费的, 去下载破解版的吧
  2. 环境变量 > 系统变量 > Path > 编辑 > 添加OpenSSL 安装路径(比如C:\OpenSSL-Win64\bin) // 为了能在cmd中输入 openssl 指令
  3. openssl genrsa -out private.key 2048 // 生成私钥 private.key 是生成的私钥文件名,可更改, 2048 是密钥长度,可调整
  4. openssl req -new -key private.key -out request.csr // 生成证书签名请求文件(CSR), 会要求输入一堆信息,其他随便填。域名也许需要好好填?
  5. openssl x509 -req -days 365 -in request.csr -signkey private.key -out certificate.crt // 使用生成的私钥和CSR文件, 生成一个自签名证书 -days 365:证书有效期为 365 天,可调整,certificate.crt 是生成的证书文件名
  6. openssl x509 -in certificate.crt -text -noout // 查看证书详细信息

web服务器

  • [ Apache ]
  • [ Nginx ]
  • [ IIS ]

Apache

需要安装下载 Apache, 配置文件(httpd.conf 或 httpd-ssl.conf),启动完成

Nginx

需要安装下载nginx, 配置好 nginx.conf, 启动完成

IIS

IIS 是windows自带的模块,打开并配置,启动完成

1.确保安装IIS

   1. 打开 控制面板>程序和功能>启用或关闭Windows功能
2. 勾选 **Internet Information Services**, 并确保安装了 **Web管理工具和Web核心服务**

2.导入证书到 IIS

  1. 将.crt 和 .key 转换为 .pfx文件。 cmd 运行以下命令 `openssl pkcs12 -export -out certificate.pfx -inkey private.key -in certificate.crt`;  按提示设置导出密码
2. 打开 IIS, 左侧选择**服务器节点**, 双击 **服务器证书**, 点击右侧的**导入**, 在弹出的窗口中,选择.pfx 文件, 输入转换.pfx 文件时设置的密码, 证书存储选择**个人**, 点击确定完成导入

3. 绑定 https 到网站

3.1.安装 IIS URL Rewrite 模块和 ARR 模块, 并启用
1. 搜索  IIS Url Rewrite, 下载安装包, 安装完成后重启IIS 管理器。   官网链接: https://www.iis.net/downloads/microsoft/url-rewrite
2. 搜索 IIS ARR, 下载安装包, 安装完成后重启iis管理器。 官网链接: https://www.iis.net/downloads/microsoft/application-request-routing
3. 启用 ARR 的反向代理功能, 打开 IIS 管理器左侧, 点击服务器节点, 点击右侧 【**应用程序请求路由缓存**】, 右侧操作窗口中, 点击 【**服务器代理设置**】,勾选 【**启用代理**】, 点击 【**应用**】
4. 配置完成后, 重新打开IIS管理器, 右侧会出现 URL Rewrite 选项, 双击此选项, 检查能否添加规则
3.2. IIS管理器 配置
1. win键输入IIS,打开 (IIS 全名 internet information services)
2. 在左侧选择 【**Default Web Site**】, 右键选择【**编辑绑定**】, 点击【**添加**】, 类型选择 https(还有http和ftp可选), SSL证书选择导入的自签名证书。 见图2
3. 双击 【**URL Rewrite**】, 点击右侧 【**添加规则**】,选择 【**反向代理**】, 点击 【**确定**】, 入站规则, 目标服务器填写为127.0.0.1:8091, 勾选 【**启用SSL代理**】, 点击应用, 见图3
4. 测试结果见图4

         图2: 网站绑定配置

         图3:URL Rewrite 配置

         图4: 最终结果   用 https://192.168.40.39 访问, 只能内网访问。 外网访问的话需要域名, 我没有域名,等我再去研究一下

tips

开启8091的httpserver, go 代码如下
func main() {
wg := sync.WaitGroup{}
wg.Add(1)
//prepare(&wg)
prepareBrief(&wg)
wg.Wait()
} // prepareBrief 极简版http 强烈推荐, 既可以接受客户端的任何形式 (Get\Post...)
func prepareBrief(wg *sync.WaitGroup) {
http.HandleFunc("/everything", HandleEveryThing)
go func() {
if err := http.ListenAndServe(common.ServerListen, nil); err != nil {
wg.Done()
panic(err)
}
}()
}
func HandleEveryThing(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("congratulation! you did it"))
}

外网如何通过https访问自己的服务的更多相关文章

  1. Windows 实例搭建的 FTP 在外网无法连接和访问

    外网无法连接和访问 Windows 实例搭建的 FTP,这种情况可能是由于以下两种原因导致的: 安全组拦截外网访问 防火墙拦截 FTP 进程 安全组拦截外网访问 这种情况下,可以尝试新建一条入方向的安 ...

  2. ftp搭建后外网无法连接和访问阿里云服务器(非软件)

    阿里云服务器由于性价比高,是不少企业建站朋友们的首选.而在购买阿里云服务器后,不少客户反映其在搭建FTP后出现外网无法访问的问题,这里特意搜集整理了关于ftp搭建后外网无法连接和访问的问题,提供以下解 ...

  3. 阿里云CentOS 7无外网IP的ECS访问外网(配置网关服务器)

    说明: 1.必须要有一台机器具有外网IP的ECS. 2.如果不想配置具有外网IP的ECS时,可以购买NAT网关,但需要钱,贵.下面会说明NAT网关的配置. 3.最后吐槽一下阿里云VPC网关导致不能按照 ...

  4. 外网域名映射内网Ip 内网使用外网域名的https证书

    用nslookup www.baidu.com nslookup www.qq.com 15.64.64.53 测试了内网的dns可以解析外网域名 那么我买个外网域名,再对这个外网域名买个证书,然后外 ...

  5. redis 只允许指定的额内网IP访问,其余的外网IP不允许访问

    为了redis的安全,现在设定如下规则.只允许指定的服务器通过内网的方式访问.其余一律不准访问 因为redis登录额时候是不需要密码的,很不安全. 所以这里添加如下iptables规则 iptable ...

  6. virtualbox下面安装ubuntu后外网如何远程ssh访问

    这两天在折腾virtualbox安装linux的事情,想多弄几个节点,装hadoop, 环境如下 两台thinkpad, 一台正常上班用的,win7 一台装的ubuntu kylin 16.04, 上 ...

  7. 外网通过root账户访问虚拟机mysql

    http://www.cnblogs.com/live41/archive/2013/04/02/2995178.html

  8. 3-ftp搭建成功,服务器能访问,外网无法连接和访问

    登录 ECS 管理控制台,找到相应的实例. 在实例的右侧单击管理,进入实例详情页面.选择本实例安全组. 在安全组列表页面,找到相应的安全组,单击配置规则. 在安全组规则页面,单击添加安全组规则. 在添 ...

  9. 外网配置花生壳动态域名解析实现外网访问本地iis及vs实时调试

    描述:假如已连外网,具备一台路由器的情况下在路由器设置页面配置花生壳动态域名解析,使得外网可以访问到本地iis 托管的web服务,模拟真实环境调试应用程序. 网络运营商ip的动态分配,通常网络提供商给 ...

  10. JBoss7.1配置外网访问

    在JBoss7.1目录jboss-as-7.1.1.Final/standalone/configuration下找到standalone.xml,找到以下的节点,在尝试了以下两种方法: 1. < ...

随机推荐

  1. android java.lang.Exception: java.net.ProtocolException: Expected HTTP 101 response

    Android stomp长连接连接异常: 报错:java.lang.Exception: java.net.ProtocolException: Expected HTTP 101 response ...

  2. RocketMQ 下载安装及消息发送

    消息队列前文目录链接参考: 消息队列初见:一起聊聊引入系统mq 之后的问题https://www.cnblogs.com/yizhiamumu/p/16573472.html 分布式事务实战方案汇总  ...

  3. 第一个鸿蒙程序Hello Word

    DevEco Studio介绍 HUAWEI DevEco Studio(以下简称DevEco Studio)是基于IntelliJ IDEA Community开源版本打造,面向华为终端全场景多设备 ...

  4. Angular 18+ 高级教程 – EventManagerPlugin & Hammer.js Gesture

    前言 今天来揭秘一下 Angular 的 Event Listening,看看它底层有什么好玩的地方. (keydown.enter) 语法 在 Component 组件 の Template Bin ...

  5. windbg配置问题汇总(记录)

    .loadby sos.dll mscorwks.symfix c:\windows\symbols windbg配置问题汇总 1.Failed to find runtime DLL (clr.dl ...

  6. 还在苦于密码太弱?教你3招用Linux生成高强度密码

    各位好啊,我是会编程的蜗牛,作为java开发者,我们平常肯定会接触Linux操作系统,其实除了一般的部署应用外,它还可以帮助我们生成密码.解决我们平常自己想各种复杂密码的烦恼,以后我会讲一讲如何安全地 ...

  7. 76.最小覆盖子串 Golang实现

    题目描述: 给你一个字符串 s .一个字符串 t .返回 s 中涵盖 t 所有字符的最小子串.如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" . 注意: 对于 t ...

  8. SpringBoot.3中的aot.factories到底有什么用?和以前的spring.factories一样吗?

    首先,我们来澄清一下 aot.factories 和 spring.factories 之间的区别.这两个文件不仅名称不同,而且在功能上也存在显著差异.接下来,我们将深入探讨这两个文件的具体作用以及它 ...

  9. USB-A, Micro, lightning and USB-C

  10. Python:条件分支 if 语句全讲解

    Python:条件分支 if 语句全讲解 如果我拿出下面的代码,阁下该做何应对? if not reset_excuted and (terminated or truncated): ... els ...