開發微信小程式中SSL協議的申請、證書綁定、TLS 版本處理等

来源:http://www.cnblogs.com/wuhuacong/archive/2017/07/24/7230393.html
-Advertisement-
Play Games

在上篇隨筆《基於微信小程式的系統開發準備工作》介紹了開發微信小程式的一些前期的架構設計、技術路線 、工具準備等方面內容,本篇隨筆繼續這個步驟,逐步介紹我們實際開發過程中對SSL協議的申請及後期處理過程,包括證書的IIS埠綁定,以及解決“”小程式要求的 TLS 版本必須大於等於 1” 的問題。 ...


在上篇隨筆《基於微信小程式的系統開發準備工作》介紹了開發微信小程式的一些前期的架構設計、技術路線 、工具準備等方面內容,本篇隨筆繼續這個步驟,逐步介紹我們實際開發過程中對SSL協議的申請及後期處理過程,包括證書的IIS埠綁定,以及解決“”小程式要求的 TLS 版本必須大於等於 1” 的問題。

1、證書申請及成功的後續處理

小程式的配置要求我們必須在網站提供443埠服務,需要加入HTTPS證書,這種證書可以從雲服務商上購買,如騰訊雲、阿裡雲上的雲伺服器後臺都提供了購買證書服務的通道,以阿裡雲為例,使用阿裡雲賬號登陸後,在【控制台】【安全雲盾】【證書服務】裡面進行申請。

購買證書,我們在沒有太多資金支持的情況下,可以考慮先使用免費SSL證書,阿裡雲上提供 免費型DV SSL的申請,購買後,會在訂單列表裡面有一個待審核的訂單,如下所示,等待審核通過即可使用。

一般情況下,如果我們填寫的資料正確,會較快通過審核的,如果我們的DNS不在萬網上,那麼我們還需要到服務商的網站進行添加阿裡雲的DNS配置。通過我們在提交信息的時候,如果是Windows伺服器,因此會勾選DNS方式驗證,如下所示。

這樣提交成功後,會同時在伺服器的雲解析上面自動增加一條記錄,如下所示

如果我們的申請的免費SSL證書獲得通過,那麼狀態會變為【已簽發】,如下所示,這個時候就可以用了。

 下載的證書包括幾個文件,如下所示。

我們在IIS伺服器上雙擊pfx文件,預設一步步操作即可把證書增加加到對應的目錄裡面了。

接著我們可以在控制臺中查看到對應的證書位置。

然後在IIS裡面綁定443埠,選擇對應的SSL證書即可完成對SSL證書的綁定了,如下圖所示。

這個時候,如果我們訪問網站(我們官網是https://www.iqidi.com),那麼 就可以在瀏覽器的左側看到證書的信息了。

 

2、微信小程式整合處理

為了整合遠程HTTPS連接獲取數據,我們需要進行部署一個Web API的介面,那麼我們可以建立一個進行MVC控制器進行測試,如下我們在控制器裡面添加一個方法來獲取第三方介面的數據,然後返回來給我們的小程式使用。

例如,我們以連接地址:http://m.maoyan.com/movie/list.json返回的數據為例,這個介面用來獲取電影的數據,獲得的結果如下所示。

由於小程式對功能變數名稱的限制,我們不能使用第三方的API介面,因此需要在自己功能變數名稱內部的API進行封裝處理,然後再提供給自己的小程式使用,我們建立一個MVC的控制器方法,如下代碼所示。

        /// <summary>
        /// 增加一個功能變數名稱內的介面,供小程式測試
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        public ActionResult Movies(int offset = 0, string type = "hot", int limit=6)
        {
            var url = "http://m.maoyan.com/movie/list.json";
            var postData = string.Format("?offset={0}&type={1}&limit={2}", offset,type,limit);

            HttpHelper helper = new HttpHelper();
            string result = helper.GetHtml(url+ postData, "", false);
            return Content(result);
        }

這樣我們使用Fiddler測試的時候,確信能夠獲得返回的JSON數據,在進行小程式的測試即可。

執行POST數據的處理,可以獲得對應的JSON數據,如下所示。

不過如果我們這個時候整合小程式進行測試,如下代碼所示。

onShow: function () {
    var that = this
    wx.request({
      url: 'https://www.iqidi.com/h5/movies',
      data: {
        offset: 0,
        type: 'hot',
        limit: that.data.limit
      },
      method : 'POST',
      header: {
        'Content-Type': 'application/json'
      },
      success: function (res) {
        console.log(res.data)
        that.setData({
          films: res.data.data.movies,
          loading: true
        })
      }
    })

那麼上述的處理操作,還是沒有能夠獲取正確的結果的,調試小程式發現,它提示”小程式要求的 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 (PCI Compliance)
md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server"
new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server" -name Enabled -value 0 -PropertyType "DWord"
# 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 (PCI Compliance) md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server" new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server" -name Enabled -value 0 -PropertyType "DWord"

這樣啟動介面,獲得數據併在小程式中進行正確展示了。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文出處:http://www.cnblogs.com/wy123/p/7218316.html (保留出處並非什麼原創作品權利,本人拙作還遠遠達不到,僅僅是為了鏈接到原文,因為後續對可能存在的一些錯誤進行修正或補充,無他) 資料庫中的事物是具有原子性(Atomicity),一致性(Consiste ...
  • 本文通過示例詳細分析rsync演算法原理和rsync的工作流程,是對rsync官方技術報告和官方推薦文章的解釋。 以下是rsync系列篇: 1.rsync(一):基本命令和用法 2.rsync(二):inotify+rsync詳細說明和sersync 3.rsync演算法原理和工作流程分析 4.rsyn ...
  • 文本文件的操作 #輸入重定向 tr 'a-z' 'A-Z' hello HELLO world WORLD 重定向後 tr 'a-z' 'A-Z' < file HELLO WORLD #格式化輸入內容到文件: #標準輸入、標準輸出與標準錯誤 標準輸入0(鍵盤僅讀取)、標準輸出1與標準錯誤2(顯示屏 ...
  • 隨著網站業務越來越複雜,對數據存儲和檢索的需求也越來越複雜,網站需要採用一些非關係型資料庫技術(即NoSQL)和非資料庫查詢技術如搜索引擎。NoSQL資料庫一般使用MongoDb,搜索引擎一般使用ElasticSearch,最好可以研究ELK整套解決方案。 使用NoSQL和搜索引擎 NoSQL和搜索 ...
  • 在你的項目屬性頁面裡面,把是否包含unsafe代碼的選項選上 ...
  • 我色盲,不是真色盲,而是對顏色沒感覺,配出來太醜了,找了找配色表,發現是網頁的,每次都要開瀏覽器 就自己做了個,panel + text ,純界面操作,沒有代碼,調調色,填填文字什麼的 下載地址:pan.baidu.com/s/1qYTtaHI ...
  • HttpModule是用來註冊HttpApplication事件的,實現IHttpModule介面的托管代碼模塊可以訪問該請求管道的所有事件。那麼對於我們最常用的ASP.NET Forms身份驗證模塊是如何底層封裝處理的呢? ...
  • 前言:由於項目中有ip輸入,但C#中又沒有IP控制項,如果直接放4個TextBox感覺又怎麼好,還不好控制,於是可以通過自定義控制項的方式來解決,就又了下麵的自定義ip控制項,該控制項功能基本完善,如果還有未完善的功能,再來更新。 註:主要註意問題,1.滑鼠進入ip輸入框全選該ip輸入框的內容 2.當輸入完 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...