前情提要

最近在接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. Kubernetes-9:Service介绍及演示

    Service Kubernetes 的Service定义了这样一种抽象:一个 Pod 的逻辑分组,一种可以访问他们的策略 -- 微服务,这一组Pod能够被Service访问到,通常是通过tabel ...

  2. 深入理解JavaScript中的箭头函数

    箭头函数可以使我们的代码更加简洁,如下: var sum = (a,b) => a+b; JavaScript 充满了我们需要编写在其他地方执行的小函数的情况. 例如: arr.forEach( ...

  3. linux java 初始环境配置

    linux初始环境配置 1.设置IP 查看虚拟机ip地址:ip addr 修改ip地址 Vi /etc/sysconfig/network~scrips/ifcfg-ens33(不一定是33 动态的) ...

  4. 2023年1月中国数据库排行榜:OceanBase 持续两月登顶,前四甲青云直上开新局

    一元复始,万象更新. 国产数据库在经历过耕获菑畲的一年后,产品.生态.人才队伍建设等都取得了重大的进展.2023年1月 墨天轮中国数据库流行度排行 火热出炉,本月排行榜"属性"列新 ...

  5. 封装setItem 和 getItem 本地存储

    store.js 文件 按需导出setItem 和 getItem 函数 :在utils文件里面 : export const setItem = (key, value) => { // 复杂 ...

  6. 【Azure Cloud Service】使用RESTAPI更新Cloud Service(Extended Support) 中所配置的证书

    问题描述 当根据Cloud Service (Extended Support) 文档更新证书 ( https://docs.azure.cn/zh-cn/cloud-services-extende ...

  7. FFmpeg开发笔记(五十七)使用Media3的Transformer加工视频文件

    ​继音视频播放器ExoPlayer之后,谷歌又推出了音视频转换器Transformer,要在音视频加工领域施展拳脚.根据Android开发者官网介绍:Jetpack Media3是Android媒体库 ...

  8. 云原生周刊: 使用 Kubectl 执行 100 个 Kubernetes 诊断命令 | 2023.10.23

    开源项目推荐 Stern Stern 是一个针对 Kubernetes 的多 pod 和容器日志跟踪工具.可以跟踪 Kubernetes 上的多个 pod 和 pod 中的多个容器.每个结果都用颜色编 ...

  9. 云原生爱好者周刊:在 PaaS 平台上托管 WebAssembly 应用

    云原生一周动态要闻: Knative v1.1 发布 Nocalhost v0.6.12 发布 CircleCI 的企业功能现在免费了 SolarWinds 修复了一个 Serv-U 漏洞 Nvidi ...

  10. Sentinel简单使用(1)

    使用场景 在微服务架构中,服务之间会进行大量的调用.为了防止某个服务被过多的请求压垮,导致整个系统崩溃,就需要对流量进行控制.同时,当某个服务出现故障时,为了防止故障扩散到整个系统,需要进行熔断操作. ...