前情提要

最近在接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. PowerShell 使用

    Practice 常用命令 vim $PROFILE # 编辑配置文件 Get-ChildItem *> $null # 抛弃所有输出 whoami Remove-Item -Recurse - ...

  2. 自动调用关闭释放资源try-with-resources

    try-with-resources自动执行释放资源 看到了try这个关键字立马就应该能想到异常处理机制try-catch-finally语句块.这里要说的东西和异常处理背后的机制其实几乎是一样的,只 ...

  3. 【转】 Vue中import from的来源:省略后缀与加载文件夹

    原文地址 Vue中import from的来源:省略后缀与加载文件夹_超频化石鱼的博客-CSDN博客 ,原文地址排版格式可能更好,建议看原文,本文只是为了转载记录 Vue使用import ... fr ...

  4. 【YashanDB知识库】用户密码带@字符时exp和imp无法使用

    [问题分类]数据导入导出 [关键字]YAS-00404.数据导入导出.密码.特殊字符@.exp.imp [问题描述] 当用户密码带@字符时,使用exp和imp导入导出数据,使用转义符仍然出现报错 且y ...

  5. vue项目自动导入components

    开发项目中一般组件都放在 components 目录下,对于一些高频使用的组件我们需要在入口文件中设置为全局组件, 一个一个搞,很繁琐,这里通过webpack自动挂载components为全局组件. ...

  6. springboot 集成 onlyoffice 实现文档预览、编辑、pdf转化、缩略图生成

    开源地址 https://gitee.com/lboot/lucy-onlyoffice 介绍 lucy-onlyoffice是依赖于onlyoffice的springboot文档预览编辑集成解决方案 ...

  7. U179915 关于分级火箭的一点理想化的计算

    题目地址 本题是一道疯狂推式子的玄学复杂度sb题. 解题思路 1.数学部分 ​ 首先假定已经将火箭分成了 \(n+1\) 级,记使用了 \(n\) 个分级器.记各级的开始时间点为: \[0=t_0&l ...

  8. Android Systrace 基础知识 -- Systrace 简介

    1. 正文 Systrace 是 Android4.1 中新增的性能数据采样和分析工具.它可帮助开发者收集 Android 关键子系统(如 SurfaceFlinger/SystemServer/Ke ...

  9. 二、java之面向对象

    面向对象 面向对象编程(Object-Oriented Programming,OOP) 面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据 三大特性: ◆封装 ◆◆封装的概念 程序 ...

  10. NebulaGraph 的云产品交付实践

    作者:乔雷,Vesoft.Inc 云原生技术专家 NebulaGraph 介绍 NebulaGraph 是由杭州悦数科技有限公司自主研发的一款开源分布式图数据库产品,擅长处理千亿节点万亿条边的超大数据 ...