微信小程序要求 web-view 控件绑定的目标域名必须是使用 HTTPS 安全协议加密的域名,即以 https 开头的域名。
本教程通过使用 IIS+ARR 通过反向代理完成 HTTPS 配置。
操作步骤为使你的 SmobilerApp Web 版在 HTTPS 协议下运行,请依次遵从以下步骤,完成配置。
注意:以下教程假设你拥有完全安装 IIS 管理器并进行简单 IIS 功能设置的能力。在此基础上,我们提供配置 IIS 进行 HTTPS 证书安装、反向代理配置、URL 重写功能的教程指南。
Step.1从微软官方网站下载 ARR (Application Request Routing)安装程序。此程序目前尚不会在任何 IIS 版本中默认安装,也不能从 Windows 功能中增加,必须从微软官方手动下载并作为扩展功能全新安装:
下载结束后按照安装程序的默认设置连续勾选下一步,直至完成安装:
Step.2打开 IIS 管理器,选中计算机名,然后双击打开 Application Request Routing Cache 功能:
点击 Server Proxy Settings 打开反向代理设置页面:
点击 Enable proxy 选项前的复选框,启动反向代理功能,然后点击应用。注意,无需修改其他任何默认选项:
无需理会右侧出现的 1 个提示消息、1个警告信息:
1."Server routing rules have .." 表示:用户已经启动了反向代理功能但尚未设置规则。
2."Enabling proxy allows requests.." 表示:启动反向代理功能将允许请求流量被导向至 Server Frame(服务器场)之外。这是正确的,因为 SmobilerApp 确实托管在 SmobilerService 之中。(而不是运行在 IIS 之中)
Step.3启动(或保持) IIS 默认网站 Default Web Site 的运行,如下图所示:
注意:我们启动 Default Web Site 默认网站是因为其使用了 80 端口,这给反向代理流量提供了一个合适的入口。你也可以自行创建一个使用 80 端口的空网站。
Step.4双击 Default Web Site 网站中的 ”URL 重写“ 功能,点击右侧菜单的 “添加规则” 按钮,在弹出的对话框中选择 ”空白规则“,点击确定。
按照下图所示创建规则。注意,红框部分的域名需要修改为你实际使用的域名:
1.名称:SmoApp 提升为 HTTPS;
2.请求的 URL:与模式匹配;
3.使用:正则表达式;
4.模式:(.*);
5.在条件分组中点击添加两项条件:
{HTTP_HOST} ,与模式匹配,你使用的域名
{HTTPS},与模式匹配,OFF
6.操作类型:重定向;
7.重定向 URL:https://你的域名/{R:0}
8.附加查询字符串;
9.重定向类型:永久(301)。
完成后点击右上角 “应用” 按钮,保存修改。
Step.5按照类似于上一步骤的操作新建第二条规则,如下。注意红框部分使用你配置的应用 HTTP 端口。
1.名称:反向代理前往 SmoApp;
2.请求的 URL:与模式匹配;
3.使用:正则表达式;
4.模式:(.*);
5.在条件分组中点击添加两项条件:
{CACHE_URL},与模式匹配,(.+)s://
{CACHE_URL},与模式匹配,(.*)s://
6.操作类型:重写;
7.重定向 URL:{C:1}://localhost:2324/{R:0}。注意,localhost:2324 是你在云平台应用设置配置的服务器 IP 地址。应当保持与云平台一致,否则访问 Web 版应用时会出现 “业务地址未配置” 的错误。
8.附加查询字符串;
完成后点击右上角 “应用” 按钮,保存修改。
完成步骤 4、5 以后,你将得到如下两条规则:
Step.6导入 HTTPS 证书到 IIS 证书管理器 。点击计算机名回到 IIS 主页,双击 “服务器证书” 功能:
在服务器证书管理界面中点击 ”导入“ 按钮,选择 .pfx 扩展名的证书文件,输入证书密码(如果有的话)进行导入。导入成功后你将在列表中看到你的证书信息,例如在本例中,我们导入了 *.jx.smobiler.com 的通配符证书:
注意: 选择的文件是 .pfx 格式文件,请在从证书提供商处下载文件时优先选择此格式的证书。如果你拥有的是 .pem + .key 格式的两个证书文件,请滑动至文末查看 常见问题 ,以了解如何将 .pem + .key 文件转换为 .pfx 文件。
Step.7右键单击 Default Web Site 网站,选择 “编辑绑定” ,并为其 添加 一个 443 端口用于接收 HTTPS 请求:
添加窗口中,设置详情如下所示。请注意,主机名需要替换为你使用的域名,并请留意选择的 SSL 证书是否正确:
同时修改 Default Web Site 网站的 80 端口 主机名为你所使用的域名。如下图所示:
最后,通过浏览器访问即可启用 HTTPS 安全连接:
常见问题
Q: HTTPS 证书如何申请?
HTTPS 证书的申请渠道众多,可以是付费向 HTTPS 证书供应商按年购买,也可以从一些公益组织的渠道低价或免费申请。
Q: 我只有 .pem+.key 格式的证书文件,如何获得 .pfx 格式的证书文件?
可从供应商处重新选择 .pfx 格式的证书文件下载,或者使用 openssl 工具自行转换。openssl 工具可从 http://gnuwin32.sourceforge.net/packages/openssl.htm 下载,下载后运行的转换命令如下:
openssl pkcs12 -inkey /path-to/privkey.pem -in /path-to/cert.pem -export -out ./my-crt.pfx