1. 程式人生 > >秒懂HTTPS介面(JMeter壓測篇)

秒懂HTTPS介面(JMeter壓測篇)

文章目錄

前言

使用JMeter壓測HTTPS介面比較簡單,只需要預先處理SSL證書認證,後面就是壓測HTTP介面的通用步驟。

HTTPS連線證書來驗證瀏覽器和WEB伺服器之間的連線。通過HTTP連線時,伺服器會將證書提供給瀏覽器。為了對證書進行身份驗證,瀏覽器會檢查伺服器證書是否連結到其內建根CA之一的證書頒發機構(CA)簽名,詳細請參考秒懂HTTPS介面(原理篇)

JMeter壓測

目前主要兩種方式:

  • 錄製HTTPS(適用購買的CA證書)
  • 手動配置證書(均適用)

錄製HTTPS

大致原理

JMeter錄製器通過瀏覽器訪問其代理伺服器,由代理伺服器根據訪問解析後生成HTTP Sampler的方式充當了瀏覽器的角色,於是當建立代理伺服器連線後,瀏覽器會直接將代理伺服器當做目標伺服器。這時候它就會向代理伺服器索要數字證書,JMeter通過生成一個本地的CA證書來完成這個與瀏覽器建立HTTPS連線的過程。
然後JMeter使用自己的證書攔截來自瀏覽器的HTTPS連線,實際上就是JMeter偽裝成目標伺服器。

具體步驟

開啟JMeter在選單欄上選擇錄製模板
在這裡插入圖片描述

生成完整的測試計劃
在這裡插入圖片描述

HTTP Request Default中輸入域名/IP地址,這裡以github.com示例
在這裡插入圖片描述

返回HTTP(S) Test Script Recorder,然後單擊啟動按鈕
在這裡插入圖片描述

這時候已經啟動JMeter代理伺服器,用於攔截瀏覽器請求。這時候會在jmeter_home/bin資料夾中生成ApacheJMeterTemporaryRootCA.crt檔案
在這裡插入圖片描述

在這裡插入圖片描述
JMeter生成的CA證書預設情況是不被瀏覽器信任的,所以我們需要安裝其為受信任的證書,這裡我以Mac系統示例。
在這裡插入圖片描述
在這裡插入圖片描述

然後就是配置瀏覽器使用JMeter代理了,這裡我以Chrome示例。

開啟"設定"
在這裡插入圖片描述

開啟"系統"選單
在這裡插入圖片描述
在這裡插入圖片描述

設定代理
在這裡插入圖片描述

最後,在瀏覽器輸入URL地址,JMeter會生成錄製的請求。
在這裡插入圖片描述

手動配置證書

從瀏覽器匯出站點證書(一般是單向證書,即伺服器不限制客戶端),此處以Window系統Chrome瀏覽器示例
在這裡插入圖片描述
在這裡插入圖片描述
證書匯出為DER格式
在這裡插入圖片描述

帶有後綴副檔名的證書檔案:
*.DER *.CER : 這樣的證書檔案是二進位制格式,只含有證書資訊,不包含私鑰。
.CRT : 這樣的檔案可以是二進位制格式,也可以是文字格式,一般均為文字格式,功能與.DER/.CER相同。
*.PEM : 一般是文字格式,可以放證書或私鑰,或者兩者都包含。 *.PEM如果只包含私鑰,那一般用 *.KEY代替。
*.PFX *.P12 是二進位制格式,同時含證書和私鑰,一般有密碼保護

在JDK的bin目錄下通過keytool把證書匯入祕鑰檔案.strore

C:\Program Files\Java\jdk1.8.0_111\bin>keytool -import -alias tomcat -file d:/tomcat.cer -keystore d:/tomcat.keystore
輸入金鑰庫口令:
再次輸入新口令:
所有者: CN=zuozewei, OU=7DGroup, O=7D, L=ChaoYan, ST=BeiJing, C=CN
釋出者: CN=zuozewei, OU=7DGroup, O=7D, L=ChaoYan, ST=BeiJing, C=CN
序列號: 42a28e33
有效期開始日期: Thu Nov 29 23:05:23 CST 2018, 截止日期: Fri Nov 29 23:05:23 CST 2019
證書指紋:
         MD5: 14:0B:55:7A:F3:22:08:D0:B9:62:0D:52:68:6F:53:26
         SHA1: 62:66:3F:76:AE:B0:39:9A:20:B0:32:08:00:5D:9B:74:29:0A:D0:33
         SHA256: 45:A2:50:84:99:A6:74:2C:13:A4:67:88:AC:1C:2D:72:42:61:F0:A3:9E:D2:1E:F9:BF:79:76:E5:64:DF:C1:CD
         簽名演算法名稱: SHA256withRSA
         版本: 3

擴充套件:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 90 A9 84 43 50 99 02 A2   FC B4 0C 33 B0 B6 16 CC  ...CP......3....
0010: C1 4E 80 AD                                        .N..
]
]

是否信任此證書? []:  y
證書已新增到金鑰庫中

通過JMeter的SSL管理載入store檔案
在這裡插入圖片描述
後面跟壓測HTTP介面一樣,不過要注意HTTP Request Sampler協議輸入https,埠設定為443
在這裡插入圖片描述

秒懂HTTPS介面系列原始碼:
https://github.com/zuozewei/Springboot-https-demo

相關係列:
秒懂HTTPS介面(原理篇)
秒懂HTTPS介面(實現篇)
秒懂HTTPS介面(介面測試篇)