开发微信小程序碰到的 IIS 问题

* 未显示页面 因为请求实体过大

问题描述:在 IIS 上部署了一个可以接收文件上传的 POST webAPI ,使用 Http 验证时没有任何问题,使用 SSL 后;通过微信小程序 Post 文件流,就会导致异常:“未显示页面 因为请求实体过大” 的 413               错误;但在 Chrome 内核的微信小程序编辑工具中,则不存在该问题;

问题原因:客户端发起一个请求后,IIS 会收到足以解析请求标头的数据,但不会收到整个请求实体正文,如果发现需要客户端证书时,将尝试重新协商连接; 但此时客户端正等待向 IIS 发送请求中的其余数               据。因此,如果要让客户端能接受重新协商,则必须使用 SSL 预加载功能预加载请求实体正文,此时则可能引起默认设置值 UploadReadAheadSize 长度太小的问题;

解决方案:进入 cd %WinDir%\System32\Inetsrv 目录执行命令行

              appcmd.exe list config -section:system.webServer/serverRuntime  // 查看当前设置的 UploadReadAheadSize  大小(byte)

              appcmd.exe set config -section:system.webserver/serverruntime/uploadreadaheadsize: 204800/commit:apphost   // 根据需要调整大小;

 

* TLS 仅支持 1.2 及以上版本

问题描述:开发微信小程序进行 Post 文件时,遇到了 “tls 仅支持 1.2 及以上版本” 的问题;

问题原因:Windows 服务器默认没有启用支持 TLS 1.2 及以上版本;

解决方案:在PowerShell 中执行以下命令,并重启服务器(必须步骤);

# Enables TLS 1.2 on windows Server 2008 R2 and Windows 7

# These keys do not exist so they need to be created prior to setting values.
md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2"
md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server"
md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client"

# Enable TLS 1.2 for client and server SCHANNEL communications
new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -name "Enabled" -value 1 -PropertyType "DWord"
new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -name "DisabledByDefault" -value 0 -PropertyType "DWord"
new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -name "Enabled" -value 1 -PropertyType "DWord"
new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -name "DisabledByDefault" -value 0 -PropertyType "DWord"

# Disable SSL 2.0/3.0 (PCI Compliance)
md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\"
md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server"
md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\"
md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server"
new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server" -name Enabled -value 0 -PropertyType "DWord"
new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server" -name Enabled -value 0 -PropertyType "DWord"
posted @ 2017-04-17 19:36  SPCop  阅读(764)  评论(0编辑  收藏  举报