当前位置:   article > 正文

微信小程序HTTPS请求相关_微信小程序 ssl其他端口

微信小程序 ssl其他端口

前言

微信小程序跟后端的通信必须要HTTPS,总结开发中遇到的问题。

PS:如果使用自签名证书,小程序上线后是没法进行请求的,必须申请安全的证书,
报-200:net::ERR_CERT_COMMON_NAME_INVALID

以下是微信开放文档中的要求:

 服务器域名配置

每个微信小程序需要事先设置通讯域名,小程序只可以跟指定的域名与进行网络通信。包括普通 HTTPS 请求(wx.request)、上传文件(wx.uploadFile)、下载文件(wx.downloadFile) 和 WebSocket 通信(wx.connectSocket)。

配置流程

服务器域名请在 「小程序后台-开发-开发设置-服务器域名」 中进行配置,配置时需要注意:

  • 域名只支持 https (wx.requestwx.uploadFilewx.downloadFile) 和 wss (wx.connectSocket) 协议;
  • 域名不能使用 IP 地址(小程序的局域网 IP 除外)或 localhost;
  • 可以配置端口,如 https://myserver.com:8080,但是配置后只能向 https://myserver.com:8080 发起请求。如果向 https://myserver.com、https://myserver.com:9091 等 URL 请求则会失败。
  • 如果不配置端口。如 https://myserver.com,那么请求的 URL 中也不能包含端口,甚至是默认的 443 端口也不可以。如果向 https://myserver.com:443 请求则会失败。
  • 域名必须经过 ICP 备案;
  • 出于安全考虑,api.weixin.qq.com 不能被配置为服务器域名,相关API也不能在小程序内调用。 开发者应将 AppSecret 保存到后台服务器中,通过服务器使用 getAccessToken 接口获取 access_token,并调用相关 API;
  • 对于每个接口,分别可以配置最多 20 个域名。

HTTPS 证书

小程序必须使用 HTTPS/WSS 发起网络请求。请求时系统会对服务器域名使用的 HTTPS 证书进行校验,如果校验失败,则请求不能成功发起。由于系统限制,不同平台对于证书要求的严格程度不同。为了保证小程序的兼容性,建议开发者按照最高标准进行证书配置,并使用相关工具检查现有证书是否符合要求。

对证书要求如下:

  • HTTPS 证书必须有效;
    • 证书必须被系统信任,即根证书被已系统内置
    • 部署 SSL 证书的网站域名必须与证书颁发的域名一致
    • 证书必须在有效期内
    • 证书的信任链必需完整(需要服务器配置)
  • iOS 不支持自签名证书;
  • iOS 下证书必须满足苹果 App Transport Security (ATS) 的要求;
  • TLS 必须支持 1.2 及以上版本。部分旧 Android 机型还未支持 TLS 1.2,请确保 HTTPS 服务器的 TLS 版本支持 1.2 及以下版本;
  • 部分 CA 可能不被操作系统信任,请开发者在选择证书时注意小程序和各系统的相关通告。

除了网络请求 API 外,小程序中其他 HTTPS 请求如果出现异常,也请按上述流程进行检查。如 https 的图片无法加载、音视频无法播放等。

跳过域名校验

在微信开发者工具中,可以临时开启 开发环境不校验请求域名、TLS版本及HTTPS证书 选项,跳过服务器域名的校验。此时,在微信开发者工具中及手机开启调试模式时,不会进行服务器域名的校验。

 

——————————————————————————————————————————————————

申请免费SSL

我选择腾讯云(因为其他我都申请了,但最后腾讯成功了,而且腾讯云的文档很全)
https://buy.cloud.tencent.com/ssl
填写域名相关,完成证书申请。

https://cloud.tencent.com/document/product/400/4142#ManualVerification

根据操作手册完成证书验证。我选择手动 DNS 验证


 

因为我的域名在华为云,所以(这一步很关键):



按照证书详细那的信息填写。
值要加双引号
等几分钟,就可以了


下载下来,我是在spring boot 中使用,其他的也可以照文档部署。

https://cloud.tencent.com/document/product/400/4143

 

spring-boot配置https

application.yml添加证书信息,选择对应证书,spring boot 使用Tomcat,自定义自选。

  1. server:
  2. port: 443
  3. ssl:
  4. key-store: classpath:hg.gxxxx.com.jks
  5. key-store-password: gxxxx
  6. key-store-type: JKS

代码添加(这里是spring boot 2.2.2的环境,2.1以下自行百度):

  1. @SpringBootApplication
  2. public class GuestBookApplication {
  3. public static void main(String[] args) {
  4. SpringApplication.run(GuestBookApplication.class, args);
  5. }
  6. @Bean
  7. public TomcatServletWebServerFactory servletContainer() {
  8. TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
  9. @Override
  10. protected void postProcessContext(Context context) {
  11. SecurityConstraint constraint = new SecurityConstraint();
  12. constraint.setUserConstraint("CONFIDENTIAL");
  13. SecurityCollection collection = new SecurityCollection();
  14. collection.addPattern("/*");
  15. constraint.addCollection(collection);
  16. context.addConstraint(constraint);
  17. }
  18. };
  19. tomcat.addAdditionalTomcatConnectors(createHTTPConnector());
  20. return tomcat;
  21. }
  22. private Connector createHTTPConnector() {
  23. Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
  24. connector.setScheme("http");
  25. connector.setSecure(false);
  26. connector.setPort(80);
  27. connector.setRedirectPort(443);
  28. return connector;
  29. }
  30. }

 

到这里就完成了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/577525
推荐阅读
相关标签
  

闽ICP备14008679号