https白嫖方案

1. 準(zhǔn)備域名

既然是白嫖,那么域名我們就使用免費(fèi)的域名就好了梳玫,我在freenom網(wǎng)站上注冊(cè)的。免費(fèi)的都是比較偏的域名后綴墓怀,不過(guò)無(wú)所謂汽纠,反正測(cè)試用而已

做好域名解析,我這里本地測(cè)試使用傀履,所以解析到自己的內(nèi)網(wǎng)ip(能指向本機(jī)就行啦)

2. 準(zhǔn)備https證書

CA證書的話虱朵,有兩種選擇,一種使用自簽名證書钓账,一種使用CA官方證書;

區(qū)別

  1. 自簽名證書是“黑戶”梆暮,只能起到https加密的作用,但是無(wú)法被瀏覽器啦粹、操作系統(tǒng)承認(rèn)
  2. 具體效果就是瀏覽器訪問(wèn)時(shí)會(huì)顯示“不安全連接”的圖標(biāo)和提示
  3. 自簽名證書無(wú)法防范“中間人攻擊”方式,其實(shí)還是不安全的通信方式(客戶端的可以自己去實(shí)現(xiàn)加密通信策略)
  4. 使用CA證書需要付費(fèi)唠椭,并且有時(shí)限跳纳,要考慮成本和注意到期續(xù)費(fèi)問(wèn)題(過(guò)期的CA證書等同于自簽名證書)

2.1 免費(fèi)CA證書申請(qǐng)

免費(fèi)的CA證書申請(qǐng)渠道很多,基本是1年期限寺庄,我這里使用freessl,注冊(cè)流程忽略斗塘,沒什么好說(shuō)的(其中一步域名驗(yàn)證赢织,只要做好相關(guān)解析,等解析生效驗(yàn)證過(guò)關(guān)即可)

2.1.1 生成CA證書

申請(qǐng)成功后馍盟,可以啟動(dòng)網(wǎng)站提供的客戶端“keyManager”于置,在“證書管理--選中某個(gè)證書--更多--所有格式--輸入私鑰加密密碼--導(dǎo)出”

導(dǎo)出后有多個(gè)文件夾朽合,對(duì)應(yīng)不同的web服務(wù)器,我將使用tomcat服務(wù)器曹步,所以選用“.jks”后綴的私鑰

3. 準(zhǔn)備java web項(xiàng)目

我這里準(zhǔn)備了個(gè)簡(jiǎn)單的spring boot項(xiàng)目,寫了一個(gè)簡(jiǎn)單的接口尿孔,用于后續(xù)移動(dòng)端https請(qǐng)求用

核心代碼

入口類

package com.lawyee;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class AppBoot extends SpringBootServletInitializer {

    public static void main(String[] args) {

        SpringApplication.run(AppBoot.class);
    }

    // spring boot項(xiàng)目部署到獨(dú)立的tomcat服務(wù)器上筹麸,需要繼承SpringBootServletInitializer類,重寫配置資源路徑方法
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(AppBoot.class);
    }
}

準(zhǔn)備接口

package com.lawyee.controller;

import com.lawyee.domain.Order;
import com.lawyee.domain.ResVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

@RestController
@RequestMapping("/order")
@Slf4j
public class OrderController {


    @RequestMapping("/findById")
    public ResVo findOne(String sn) {

        if (null == sn) {
            log.error("查詢訂單號(hào)為空");
            return new ResVo(0, "查詢訂單號(hào)為空", null);
        }

        if (sn.length() < 6) {
            log.warn("訂單號(hào)不能小于6位");
            return new ResVo(0, "訂單號(hào)不能小于6位", null);
        }

        Order order = new Order(sn, new Date(), "雅迪電動(dòng)車");
        ResVo resVo = new ResVo(1, "查找到1個(gè)符合訂單", order);

        log.debug("查詢出1個(gè)結(jié)果白指,訂單號(hào):{}酵紫,詳細(xì)信息:{}", sn, order);

        return resVo;
    }
}

4. 準(zhǔn)備https的web服務(wù)器

  1. 我這里使用apache-tomcat-8.5.31做web服務(wù)器,從官網(wǎng)下載即可奖地;
  2. 把之前第二步中生成的CA證書tomcat目錄下,.jks后綴的文件参歹,拷貝到tomcat根目錄下的conf文件夾中
  3. 將第三步中的java web工程,打包成war包僧界,拷貝到tomcat根目錄下的webapps文件夾中
  4. 修改conf文件夾下的server.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
 <Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener"/>
  <!-- Security listener. Documentation at /docs/config/listeners.html
  <Listener className="org.apache.catalina.security.SecurityListener" />
  -->
  <!--APR library loader. Documentation at /docs/apr.html -->
  <Listener SSLEngine="on" className="org.apache.catalina.core.AprLifecycleListener"/>
  <!-- Prevent memory leaks due to use of particular java/javax APIs-->
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>

  <!-- Global JNDI resources
       Documentation at /docs/jndi-resources-howto.html
  -->
  <GlobalNamingResources>
    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users
    -->
    <Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase"/>
  </GlobalNamingResources>

  <Service name="Catalina">

    <!-- 使用80接口捎泻,指定跳轉(zhuǎn)到443接口埋哟,https默認(rèn)接口 -->
    <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443"/>
    <!-- 配置https,默認(rèn)接口443赤赊,keystoreFile指定私鑰文件路徑, keystorePass指定私鑰密碼-->
    <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
        maxThreads="150" scheme="https" secure="true"
        keystoreFile="conf/lixian.jks"
        keystorePass="123456"
        clientAuth="false" sslProtocol="TLS" />


    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector URIEncoding="UTF-8" port="8009" protocol="AJP/1.3" redirectPort="8443"/>

    <Engine defaultHost="localhost" name="Catalina">

      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
      </Realm>

      <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log" suffix=".txt"/>

      </Host>
    </Engine>
  </Service>
</Server>
  1. 修改conf文件夾下的web.xml配置文件,讓訪問(wèn)http也跳轉(zhuǎn)到https哄孤,在文件最后吹截,添加以下配置代碼
    <login-config>
        <!-- Authorization setting for SSL -->
        <auth-method>CLIENT-CERT</auth-method>
        <realm-name>Client Cert Users-only Area</realm-name>
    </login-config>
    <security-constraint>
        <!-- Authorization setting for SSL -->
      <web-resource-collection>
        <web-resource-name>SSL</web-resource-name>
        <url-pattern>/*</url-pattern>
      </web-resource-collection>
      <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
      </user-data-constraint>
    </security-constraint> 
  1. 啟動(dòng)服務(wù)器后,使用證書對(duì)應(yīng)的域名訪問(wèn)波俄,瀏覽器地址欄左側(cè)會(huì)顯示一個(gè)鎖的圖標(biāo),點(diǎn)擊開來(lái)會(huì)顯示連接是安全的懦铺;(如果使用本地ip或者其他解析的域名,或者自簽名證書趁窃,這里一樣是顯示不安全的鏈接)
  2. 注意:CA證書急前、證書對(duì)應(yīng)的域名必須一致(包括記錄值,除非你的證書是*通配的<通配的證書很貴的>)

5. 奉上以上文件

oschina項(xiàng)目地址

6. 客戶端請(qǐng)求看效果

這里用iOS客戶端發(fā)起請(qǐng)求裆针,再用青花瓷抓包看看https通信的效果

6.1 準(zhǔn)備OC網(wǎng)絡(luò)請(qǐng)求代碼

[[AFHTTPSessionManager manager] GET:@"https://www.lixian.ml/addr/order/findById" parameters:@{@"sn": @"6666231"} progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {        
        NSLog(@"responseObject = %@", responseObject);
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {        
        NSLog(@"error = %@", error);
}];

6.2 用青花瓷抓包

https抓包效果:通信自動(dòng)被加密

使用https抓包截圖.png

http抓包效果:通信未加密据块,全是明文

使用http的抓包截圖.png

推薦文章
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末边篮,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子戈轿,更是在濱河造成了極大的恐慌,老刑警劉巖思杯,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異誊册,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)君旦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門嘲碱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人麦锯,你說(shuō)我怎么就攤上這事±敫溃” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵昆著,是天一觀的道長(zhǎng)术陶。 經(jīng)常有香客問(wèn)我,道長(zhǎng)梧宫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任脓豪,我火速辦了婚禮忌卤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘驰徊。我一直安慰自己,他們只是感情好棍厂,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布牺弹。 她就那樣靜靜地躺著时呀,像睡著了一般捐韩。 火紅的嫁衣襯著肌膚如雪退唠。 梳的紋絲不亂的頭發(fā)上荤胁,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天屎债,我揣著相機(jī)與錄音,去河邊找鬼圆丹。 笑死躯喇,一個(gè)胖子當(dāng)著我的面吹牛辫封,可吹牛的內(nèi)容都是我干的廉丽。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼欣福,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼焦履!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起嘉裤,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎厢洞,沒想到半個(gè)月后侨把,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體犀变,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡获枝,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年骇笔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嚣崭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片懦傍。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖粗俱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情寸认,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布唱蒸,位于F島的核電站灸叼,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏古今。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一蚁堤、第九天 我趴在偏房一處隱蔽的房頂上張望但狭。 院中可真熱鬧披诗,春花似錦立磁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)几于。三九已至沿后,卻和暖如春沿彭,著一層夾襖步出監(jiān)牢的瞬間尖滚,已是汗流浹背瞧柔。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工睦裳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人廉邑。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像肺素,于是被迫代替她去往敵國(guó)和親宇驾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345