免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

Spring Boot HTTPS配置實(shí)戰(zhàn):從SSL證書到雙向認(rèn)證與客戶端調(diào)用

Spring Boot HTTPS配置實(shí)戰(zhàn):從SSL證書到雙向認(rèn)證與客戶端調(diào)用 1. 為什么非要給Spring Boot套上HTTPS一次對(duì)接把我從HTTP逼到了TLS好幾年前做某內(nèi)部模擬項(xiàng)目的時(shí)候我圖省事Spring Boot的接口全用HTTP。當(dāng)時(shí)覺得反正在內(nèi)網(wǎng)拿到地址就能調(diào)結(jié)果對(duì)接方的安全清單直接紅字標(biāo)注傳輸敏感數(shù)據(jù)必須加密。我這才老老實(shí)實(shí)把證書、密鑰庫(kù)、客戶端調(diào)用整套鏈路從頭理了一遍。所以這篇內(nèi)容的核心很明確怎么讓Spring Boot應(yīng)用自己以HTTPS方式發(fā)布接口以及別人怎么才能正確調(diào)用這個(gè)HTTPS接口。服務(wù)端配置只是前半場(chǎng)后半場(chǎng)的客戶端信任鏈路往往才是大家真正卡殼的地方。你會(huì)在下文看到完整的配置樣例、SSL握手失敗的完整排查鏈路、一個(gè)雙向認(rèn)證的實(shí)戰(zhàn)方案以及一堆我踩過之后才總結(jié)出來的細(xì)節(jié)。1.1 HTTP明文傳輸?shù)碾[患比想象中更直接HTTP本身不加密數(shù)據(jù)在網(wǎng)絡(luò)上以明文漂著。你在辦公室連同一個(gè)局域網(wǎng)別人開個(gè)抓包工具就能看到請(qǐng)求里帶了什么參數(shù)。假如接口里傳的是賬號(hào)、密碼、訂單號(hào)這類數(shù)據(jù)被拿走之后很難亡羊補(bǔ)牢。HTTPS做的事情通俗點(diǎn)說就是三層加密傳輸內(nèi)容防止被中間人偷看校驗(yàn)服務(wù)器身份防止連到一個(gè)假冒的服務(wù)校驗(yàn)內(nèi)容完整性防止數(shù)據(jù)在傳輸過程中被篡改。Spring Boot本身不會(huì)自動(dòng)給你套上這層保護(hù)它默認(rèn)啟動(dòng)后還是HTTP。你需要在應(yīng)用層面把SSL證書配上讓內(nèi)嵌的Tomcat以HTTPS協(xié)議對(duì)外提供服務(wù)。1.2 什么場(chǎng)景才需要Spring Boot自己開HTTPS很多項(xiàng)目里Spring Boot應(yīng)用前面會(huì)有一層Nginx之類的反向代理TLS證書是在代理層終結(jié)的Spring Boot內(nèi)部仍然走HTTP。這是常見且推薦的部署方式不用動(dòng)應(yīng)用代碼。但有些場(chǎng)景繞不開比如服務(wù)直接暴露在容器網(wǎng)絡(luò)中或者對(duì)方的接入規(guī)范要求應(yīng)用本身必須以HTTPS協(xié)議對(duì)外又或者你在沒有前置代理的環(huán)境里做聯(lián)調(diào)。這時(shí)候就得讓Spring Boot自己的嵌入式容器處理TLS。這也是我寫這篇內(nèi)容的主要場(chǎng)景——沒有中間層靠應(yīng)用自己把HTTPS這事扛起來。2. 證書這關(guān)躲不過去自簽名與CA怎么選、怎么生成2.1 證書和信任鏈用一張身份證來理解HTTPS能成立靠的是TLS握手階段的三件事協(xié)商加密算法、驗(yàn)證服務(wù)器身份、生成會(huì)話密鑰。服務(wù)器身份靠數(shù)字證書證明證書里寫了域名、公鑰、有效期、簽發(fā)者再由簽發(fā)者用自己的私鑰簽名。你可以把證書理解成服務(wù)器的身份證客戶端驗(yàn)證證書時(shí)其實(shí)是在檢查這張身份證是不是由一家公認(rèn)機(jī)構(gòu)簽發(fā)的這個(gè)機(jī)構(gòu)就是CA。驗(yàn)證通過后客戶端拿到服務(wù)器公鑰用公鑰加密一個(gè)隨機(jī)數(shù)發(fā)給服務(wù)器服務(wù)器用私鑰解密雙方就確定了對(duì)稱加密的會(huì)話密鑰。整個(gè)體系里證書是開門憑證私鑰是只有服務(wù)器自己知道的保險(xiǎn)箱鑰匙。2.2 自簽名證書能滿足什么場(chǎng)景自簽名證書意思是簽發(fā)者就是證書持有者自己沒有上級(jí)CA背書所以瀏覽器和操作系統(tǒng)默認(rèn)都不信任它。但這不代表它安全性就差你完全可以用RSA 2048甚至更高位數(shù)TLS協(xié)商的加密強(qiáng)度一樣不低。內(nèi)網(wǎng)開發(fā)、聯(lián)調(diào)、單元測(cè)試用自簽名完全可行因?yàn)槟憧梢园炎C書手工塞進(jìn)客戶端的信任庫(kù)。生產(chǎn)環(huán)境對(duì)外給真實(shí)用戶訪問還是得用正式CA簽發(fā)的證書否則用戶瀏覽器每次訪問都彈不安全警告沒人敢繼續(xù)用。所以我的建議很簡(jiǎn)單開發(fā)測(cè)試環(huán)境自簽名生產(chǎn)環(huán)境走正規(guī)CA別混。2.3 keytool生成自簽名證書的完整命令與參數(shù)解析JDK自帶keytool生成自簽名證書最省事。以我常用的命令為例keytool -genkeypair \ -alias app-server \ -keyalg RSA \ -keysize 2048 \ -validity 365 \ -storetype PKCS12 \ -keystore server.p12 \ -dname CNlocalhost, OUDevOps, OExample \ -ext SANdns:localhost,dns:myserver.internal,ip:127.0.0.1逐個(gè)拆解一下-keyalg RSA -keysize 2048生成RSA 2048位密鑰對(duì)當(dāng)前主流業(yè)務(wù)場(chǎng)景夠用。-validity 365證書有效期365天。內(nèi)網(wǎng)調(diào)試隨意生產(chǎn)證書一般一年或兩年。-storetype PKCS12密鑰庫(kù)格式。PKCS12是跨平臺(tái)標(biāo)準(zhǔn)Spring Boot兼容性最好現(xiàn)在JDK默認(rèn)也是它。-dname CNlocalhost...證書主體信息CN填訪問時(shí)用的域名。-ext SAN...這是最容易忽略的一步。Java 9以后和新版瀏覽器都只認(rèn)SAN不認(rèn)CN。如果SAN沒填Chrome會(huì)報(bào)NET::ERR_CERT_COMMON_NAME_INVALIDJava客戶端可能報(bào)No subject alternative names present。所以生成時(shí)就把域名、IP寫全。執(zhí)行完會(huì)生成server.p12。keytool會(huì)讓你設(shè)置storepass這個(gè)密碼一定要記牢后面Spring Boot配置里就是它。PKCS12格式下密鑰密碼默認(rèn)和密鑰庫(kù)密碼一致所以配置文件里寫一個(gè)密碼就行不用額外處理key-password。2.4 生產(chǎn)環(huán)境申請(qǐng)CA證書的流程正式CA證書的申請(qǐng)流程一般是先準(zhǔn)備好私鑰生成證書簽發(fā)請(qǐng)求CSR提交給CA機(jī)構(gòu)審核審核通過后拿到證書再把證書和私鑰裝配成Spring Boot能用的PKCS12密鑰庫(kù)。用openssl做私鑰和CSR比較常見# 生成私鑰 openssl genpkey -algorithm RSA -out server.key -pkeyopt rsa_keygen_bits:2048 # 生成CSRCommon Name填對(duì)外域名 openssl req -new -key server.key -out server.csr -subj /CNmyserver.example.com拿到CA簽發(fā)的證書后把私鑰和證書合并成.p12openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12 -name app-server -passout pass:changeit如果證書鏈里包含中間證書記得把它們一起合并進(jìn).p12否則某些客戶端會(huì)報(bào)unable to find valid certification path to requested target。我自己習(xí)慣無論自簽名還是正式CA證書到Spring Boot這一層都統(tǒng)一成PKCS12格式別名固定后續(xù)配置和維護(hù)就不容易亂。3. Spring Boot服務(wù)端配置從yml到HTTP自動(dòng)跳轉(zhuǎn)3.1 最小可用配置把上一步生成的server.p12復(fù)制到src/main/resources目錄下然后在application.yml里追加server: port: 8443 ssl: key-store: classpath:server.p12 key-store-type: PKCS12 key-store-password: changeit key-alias: app-server enabled-protocols: TLSv1.2,TLSv1.3在Spring Boot 2.x里還有個(gè)server.ssl.enabled配置默認(rèn)就是true。到了Spring Boot 3.x這個(gè)配置項(xiàng)直接移除了只要key-store有值就自動(dòng)啟用HTTPS不用再手動(dòng)寫enabled: true。啟動(dòng)后控制臺(tái)會(huì)出現(xiàn)類似Tomcat initialized with port(s): 8443 (https)的日志說明你的應(yīng)用已經(jīng)在以HTTPS對(duì)外提供服務(wù)了。3.2 配置項(xiàng)逐條解析這些參數(shù)看起來簡(jiǎn)單但每一條都對(duì)應(yīng)著一個(gè)常見的翻車點(diǎn)。配置項(xiàng)作用注意事項(xiàng)server.portHTTPS服務(wù)監(jiān)聽端口內(nèi)網(wǎng)常用8443443需要root權(quán)限server.ssl.key-store密鑰庫(kù)路徑classpath:開頭是打包進(jìn)jar生產(chǎn)建議外部路徑server.ssl.key-store-type密鑰庫(kù)格式推薦PKCS12別用舊JKSserver.ssl.key-store-password密鑰庫(kù)密碼必須和生成時(shí)的storepass一致server.ssl.key-alias證書條目別名必須和keytool生成時(shí)一致server.ssl.protocol協(xié)議名一般填TLS不填走JDK默認(rèn)server.ssl.enabled-protocols允許的TLS版本老客戶端只支持TLSv1.2時(shí)別只開TLSv1.3server.ssl.client-auth是否需要客戶端證書NONE / WANT / NEED雙向認(rèn)證用NEED配置里最常踩的坑就是key-store-password和生成時(shí)的storepass不一致啟動(dòng)直接報(bào)password was incorrect。其次是key-alias配錯(cuò)報(bào)錯(cuò)信息會(huì)讓你懷疑人生。如果啟動(dòng)日志里出現(xiàn)這些異常先別懷疑證書本身回去核對(duì)密碼和別名。3.3 HTTP端口自動(dòng)跳轉(zhuǎn)HTTPS生產(chǎn)上很多場(chǎng)景希望用戶訪問HTTP端口時(shí)自動(dòng)跳到HTTPS。Spring Boot內(nèi)置Tomcat可以讓主端口跑HTTPS再額外加一個(gè)HTTP連接器做跳轉(zhuǎn)不需要寫一堆Filter來干這事。package com.example.config; import org.apache.catalina.connector.Connector; import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; import org.springframework.boot.web.server.WebServerFactoryCustomizer; import org.springframework.stereotype.Component; Component public class HttpsRedirectConfig implements WebServerFactoryCustomizerTomcatServletWebServerFactory { Override public void customize(TomcatServletWebServerFactory factory) { Connector httpConnector new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL); httpConnector.setScheme(http); httpConnector.setPort(8080); httpConnector.setSecure(false); httpConnector.setRedirectPort(8443); factory.addAdditionalTomcatConnectors(httpConnector); } }這段配置會(huì)讓服務(wù)同時(shí)監(jiān)聽8080和8443。需要注意redirectPort只是告訴Tomcat“這個(gè)連接器如果要求安全傳輸就跳到8443”它本身不會(huì)像魔法一樣把所有HTTP請(qǐng)求都強(qiáng)制轉(zhuǎn)成HTTPS。想做到強(qiáng)制跳轉(zhuǎn)要么配合安全框架的requiresSecure()要么加一個(gè)輕量過濾器對(duì)非HTTPS請(qǐng)求做302。我一般用下面這個(gè)過濾器簡(jiǎn)單直接Component public class HttpsRedirectFilter implements Filter { Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req (HttpServletRequest) request; HttpServletResponse resp (HttpServletResponse) response; if (!req.isSecure()) { String location https:// req.getServerName() :8443 req.getRequestURI() (req.getQueryString() ! null ? ? req.getQueryString() : ); resp.sendRedirect(location); } else { chain.doFilter(request, response); } } }這個(gè)過濾器適合快速場(chǎng)景。如果項(xiàng)目里已經(jīng)用了安全框架建議直接用它的Channel配置語(yǔ)義更清晰。3.4 證書放jar包里面還是外面開發(fā)階段我會(huì)把server.p12放在src/main/resources里打成fat jar直接帶證書啟動(dòng)不用管外部依賴。但這個(gè)做法有個(gè)隱患證書一旦更新整個(gè)jar要重新構(gòu)建發(fā)布而且密鑰庫(kù)和代碼一起分發(fā)泄露面更大。生產(chǎn)環(huán)境我建議把密鑰庫(kù)放到應(yīng)用外部目錄配置改成server: ssl: key-store: file:/data/app/certs/server.p12這樣運(yùn)維更新證書時(shí)不用重新發(fā)布應(yīng)用重啟服務(wù)就行。密碼也不要硬編碼在配置文件里用環(huán)境變量注入例如${SSL_STORE_PASSWORD}。我見過不少團(tuán)隊(duì)把密鑰庫(kù)密碼直接寫在application.yml里提交到代碼倉(cāng)庫(kù)這比用HTTP還讓人頭疼。4. 客戶端調(diào)用翻車現(xiàn)場(chǎng)SSL握手失敗的完整排查鏈路4.1 最常見的報(bào)錯(cuò)長(zhǎng)什么樣服務(wù)端HTTPS配好瀏覽器訪問也OK但別人用Java程序一調(diào)立刻拋異常。我第一次遇到時(shí)看到的底層錯(cuò)誤是這樣javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target看到PKIX三個(gè)字母基本可以斷定是信任鏈問題客戶端TrustManager里找不到能驗(yàn)證服務(wù)端證書的CA。自簽名證書沒有上級(jí)CAJDK默認(rèn)信任庫(kù)cacerts里自然沒有它于是握手失敗。還有一種容易混淆的報(bào)錯(cuò)是主機(jī)名不匹配javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names matching IP address 127.0.0.1 found這個(gè)意思是即使證書被信任了你訪問時(shí)用的IP/域名和證書SAN對(duì)不上一樣握手失敗。所以生成證書那一步SAN到底填了什么直接決定客戶端后面用什么地址訪問。4.2 排查過程三步定位法踩過幾次坑之后我總結(jié)出一套固定排查順序。第一步也是最重要的一步用openssl直接看服務(wù)端證書openssl s_client -connect localhost:8443 -showcerts /dev/null 21 | grep -A10 Certificate chain這里能看到證書鏈內(nèi)容。如果正常輸出說明服務(wù)端TLS層沒問題如果connection error說明服務(wù)端配置有問題回到Spring Boot去調(diào)。第二步確認(rèn)客戶端JVM信任庫(kù)里有沒有對(duì)應(yīng)證書。Java進(jìn)程默認(rèn)讀取$JAVA_HOME/lib/security/cacertskeytool -list -keystore $JAVA_HOME/lib/security/cacerts -storepass changeit | grep app-server這一步能直接確認(rèn)是不是信任鏈缺失。如果沒有對(duì)應(yīng)條目問題基本鎖定。第三步看目標(biāo)URL和證書SAN是否匹配。URL是IP證書SAN只有域名絕對(duì)過不了。三步走完90%的握手失敗都能定位不用一上來就改代碼跳過校驗(yàn)。搞清楚是哪一環(huán)斷了才知道該改哪邊。4.3 正規(guī)解法把證書導(dǎo)入客戶端信任庫(kù)開發(fā)環(huán)境下最省事的正規(guī)做法是導(dǎo)出服務(wù)端證書再導(dǎo)入客戶端JVM的cacerts# 服務(wù)端側(cè)導(dǎo)出證書 keytool -exportcert -alias app-server -keystore server.p12 -storepass changeit -file server.cer # 客戶端側(cè)導(dǎo)入信任庫(kù) keytool -importcert -alias app-server -file server.cer -keystore $JAVA_HOME/lib/security/cacerts -storepass changeit導(dǎo)入過程中會(huì)提示確認(rèn)輸入yes即可。重新跑客戶端握手直接成功。但有三點(diǎn)要注意cacerts的JDK初始密碼是changeit不少公司會(huì)統(tǒng)一改掉別硬試。導(dǎo)入cacerts是全局信任所有使用該JDK的應(yīng)用都會(huì)放行這個(gè)證書測(cè)試機(jī)無所謂生產(chǎn)環(huán)境要謹(jǐn)慎。更干凈的做法是單獨(dú)做一個(gè)truststore文件通過JVM參數(shù)指定不用動(dòng)JDK自帶的cacertsjava -Djavax.net.ssl.trustStore/data/app/certs/truststore.p12 \ -Djavax.net.ssl.trustStorePasswordchangeit \ -jar client-app.jartruststore里同樣用keytool導(dǎo)入服務(wù)端證書。影響范圍可控交付時(shí)跟著應(yīng)用走也方便在不同環(huán)境之間切換。4.4 調(diào)用側(cè)代碼怎么寫兩種可落地的寫法如果你不想改JVM參數(shù)可以在代碼里指定信任庫(kù)。最簡(jiǎn)單的寫法是在程序啟動(dòng)早期設(shè)置系統(tǒng)屬性System.setProperty(javax.net.ssl.trustStore, /data/app/certs/truststore.p12); System.setProperty(javax.net.ssl.trustStorePassword, changeit);之后用RestTemplate、HttpClient、Feign等發(fā)HTTPS請(qǐng)求都會(huì)自動(dòng)讀取這個(gè)信任庫(kù)。代價(jià)是全局生效同一個(gè)JVM里其他需要不同信任策略的請(qǐng)求也會(huì)被影響。更可控的方式是自己構(gòu)造SSLContext。以JDK自帶的HttpsURLConnection為例講清楚原理public static SSLContext buildSslContext(String trustStorePath, String storePassword) throws Exception { KeyStore trustStore KeyStore.getInstance(PKCS12); try (InputStream in new FileInputStream(trustStorePath)) { trustStore.load(in, storePassword.toCharArray()); } TrustManagerFactory tmf TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); tmf.init(trustStore); SSLContext sslContext SSLContext.getInstance(TLS); sslContext.init(null, tmf.getTrustManagers(), new SecureRandom()); return sslContext; } // 使用 SSLContext sslContext buildSslContext(/data/app/certs/truststore.p12, changeit); HttpsURLConnection connection (HttpsURLConnection) new URL(https://localhost:8443/api).openConnection(); connection.setSSLSocketFactory(sslContext.getSocketFactory());如果你想用RestTemplate思路完全一樣把構(gòu)造好的SSLContext塞給底層的HttpClient請(qǐng)求工廠。Feign、WebClient也都是換湯不換藥核心都是讓客戶端在驗(yàn)證服務(wù)端證書時(shí)能走一條包含目標(biāo)證書的信任鏈。4.5 開發(fā)環(huán)境能不能跳過校驗(yàn)?zāi)艿抑唤ㄗh本地聯(lián)調(diào)時(shí)用。跳過校驗(yàn)的本質(zhì)是讓TrustManager接收任何證書同時(shí)放開HostnameVerifierTrustManager[] trustAll new TrustManager[]{ new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return new java.security.cert.X509Certificate[0]; } public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) {} public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) {} } }; SSLContext sslContext SSLContext.getInstance(TLS); sslContext.init(null, trustAll, new SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory()); HttpsURLConnection.setDefaultHostnameVerifier((hostname, session) - true);這段代碼我調(diào)試時(shí)加過幾次確實(shí)一把梭。但生產(chǎn)環(huán)境真這么干HTTPS形同虛設(shè)中間人攻擊完全防不住。如果最后要交付別人的系統(tǒng)這種代碼不只是被code review打回的問題安全掃描直接就能標(biāo)記出來。5. 雙向認(rèn)證當(dāng)服務(wù)端反過來要驗(yàn)明調(diào)用者5.1 單向和雙向的區(qū)別前面講的都是單向HTTPS客戶端驗(yàn)證服務(wù)器身份服務(wù)器不關(guān)心客戶端是誰(shuí)。但在系統(tǒng)對(duì)系統(tǒng)的接口場(chǎng)景里有些安全要求高的對(duì)接方希望自己也驗(yàn)證調(diào)用方的身份這就是雙向認(rèn)證也叫mTLS。Spring Boot開啟雙向認(rèn)證很簡(jiǎn)單核心就一個(gè)配置server: ssl: client-auth: need trust-store: file:/data/app/certs/server-truststore.p12 trust-store-type: PKCS12 trust-store-password: changeitclient-auth有三個(gè)取值none不要求客戶端證書want請(qǐng)求客戶端證書但不強(qiáng)制客戶端不給也能繼續(xù)need強(qiáng)制必須有沒有直接握手失敗。做接口鑒權(quán)場(chǎng)景直接need。5.2 一套可以落地的mTLS配法雙向認(rèn)證需要準(zhǔn)備兩個(gè)密鑰庫(kù)服務(wù)端自己的server.p12以及客戶端自己的client.p12。為了演示我簡(jiǎn)化成直接用自簽名的客戶端證書生產(chǎn)環(huán)境建議走完整CA體系。先生成客戶端證書keytool -genkeypair -alias client-1 -keyalg RSA -keysize 2048 \ -storetype PKCS12 -keystore client.p12 -validity 365 \ -dname CNclient-1, OUInternal, OExample \ -ext SANdns:client-1.internal然后把客戶端證書導(dǎo)出導(dǎo)入服務(wù)端的truststorekeytool -exportcert -alias client-1 -keystore client.p12 -storepass changeit -file client.cer keytool -importcert -alias client-1 -file client.cer -keystore server-truststore.p12 -storetype PKCS12 -storepass changeit反過來客戶端也要信任服務(wù)端證書所以把服務(wù)端證書導(dǎo)入客戶端的truststorekeytool -exportcert -alias app-server -keystore server.p12 -storepass changeit -file server.cer keytool -importcert -alias app-server -file server.cer -keystore client-truststore.p12 -storetype PKCS12 -storepass changeit客戶端調(diào)用代碼要同時(shí)加載自己的密鑰庫(kù)和信任服務(wù)端的truststoreKeyStore clientKeyStore KeyStore.getInstance(PKCS12); clientKeyStore.load(new FileInputStream(client.p12), changeit.toCharArray()); KeyManagerFactory kmf KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); kmf.init(clientKeyStore, changeit.toCharArray()); KeyStore clientTrustStore KeyStore.getInstance(PKCS12); clientTrustStore.load(new FileInputStream(client-truststore.p12), changeit.toCharArray()); TrustManagerFactory tmf TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); tmf.init(clientTrustStore); SSLContext sslContext SSLContext.getInstance(TLS); sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), new SecureRandom());然后把sslContext塞給調(diào)用HTTP的客戶端。如果漏了kmf.init這一步服務(wù)端通常報(bào)Client not authenticated或者bad certificate意思就是客戶端沒出示有效證書直接被拒了。5.3 mTLS踩坑記錄第一個(gè)坑是證書鏈。自建CA簽發(fā)證書時(shí)最好帶上完整鏈服務(wù)端truststore里不能只放根證書要把客戶端證書鏈上的各級(jí)證書都放進(jìn)去否則驗(yàn)證時(shí)找不到中間證書會(huì)報(bào)無法構(gòu)建有效鏈。第二個(gè)坑是別名和密碼管理。PKCS12格式下密鑰庫(kù)密碼和密鑰密碼一致但導(dǎo)出導(dǎo)入時(shí)別名容易搞混。我有一次給三個(gè)系統(tǒng)各生成一套證書結(jié)果某個(gè)系統(tǒng)導(dǎo)錯(cuò)了別名聯(lián)調(diào)時(shí)半天找不出問題。后來我固定了一套命名規(guī)范服務(wù)端別名統(tǒng)一app-server客戶端別名統(tǒng)一client-序號(hào)測(cè)試環(huán)境和生產(chǎn)環(huán)境分開維護(hù)再?zèng)]亂過。第三個(gè)坑是時(shí)間。證書有效期過了立刻握手失敗。雙向認(rèn)證會(huì)兩邊都檢查任何一邊過期都不行。生產(chǎn)環(huán)境提前規(guī)劃續(xù)期窗口不要等到線上報(bào)錯(cuò)了才想起來。6. 驗(yàn)證三板斧與收尾細(xì)節(jié)curl、瀏覽器、日志外加我踩過的坑6.1 用curl快速驗(yàn)證服務(wù)端重啟服務(wù)后我第一件事不是寫代碼調(diào)用而是先curl探一遍curl -v --cacert ca.crt https://localhost:8443/actuator/health-v能看到完整握手過程包括證書指紋、加密套件和是否被信任。想臨時(shí)跳過校驗(yàn)可以用-kcurl -k https://localhost:8443/actuator/health能正常返回說明服務(wù)端TLS沒問題。接著用openssl s_client確認(rèn)證書鏈、有效期和SAN能過濾掉一半以上的配置問題。6.2 瀏覽器訪問和Java客戶端行為不一樣瀏覽器和Java客戶端對(duì)證書不信任時(shí)的處理方式完全不同。瀏覽器會(huì)彈警告讓你點(diǎn)“繼續(xù)訪問”Java客戶端則是直接拋異常中斷。也就是說你在瀏覽器上點(diǎn)兩下能過的對(duì)方Java程序根本不會(huì)給你點(diǎn)“繼續(xù)”的機(jī)會(huì)。所以我交付前習(xí)慣用一個(gè)干凈環(huán)境跑一遍客戶端代碼先把證書導(dǎo)入信任庫(kù)確認(rèn)正常再把證書移出確認(rèn)拋出的異常是我們預(yù)期的證書異常。兩步走完就能確定還沒有補(bǔ)上的環(huán)節(jié)在哪里。6.3 日志怎么看Spring Boot默認(rèn)日志基本看不到TLS握手細(xì)節(jié)。排查時(shí)可以先臨時(shí)打開DEBUGlogging: level: org.apache.tomcat: DEBUG org.apache.catalina: DEBUG org.springframework.boot.web.embedded.tomcat: DEBUG但真實(shí)項(xiàng)目里TLS握手問題在服務(wù)端日志經(jīng)常只有一行Handshake failed信息量有限。所以我更建議把問題帶到客戶端側(cè)看客戶端堆棧里的異常信息比服務(wù)端日志豐富得多。確認(rèn)服務(wù)端證書沒問題后重點(diǎn)還是回到客戶端去查信任庫(kù)和主機(jī)名校驗(yàn)。6.4 其他容易翻車的配置細(xì)節(jié)補(bǔ)充幾個(gè)我在實(shí)際項(xiàng)目里反復(fù)踩到的點(diǎn)8443端口被占用時(shí)啟動(dòng)會(huì)報(bào)BindException用netstat -tlnp | grep 8443查一下。如果把server.port配成443Linux下非root用戶啟動(dòng)會(huì)失敗因?yàn)樾∮?024端口需要特權(quán)。內(nèi)網(wǎng)環(huán)境我一般用8443避開這個(gè)限制。有些老版本JDK不支持TLSv1.3或某些客戶端只支持TLSv1.2enabled-protocols按需放寬。但別為了兼容老設(shè)備把TLSv1.0/1.1重新打開那等于舊漏洞又開了門。證書更新后一定要確認(rèn)新證書的SAN和舊證書一致。我見過有人更新證書忘了SAN結(jié)果半個(gè)系統(tǒng)的調(diào)用全掛日志里全是主機(jī)名校驗(yàn)失敗。最后分享一點(diǎn)個(gè)人體會(huì)搞明白HTTPS發(fā)布和調(diào)用真正難的不是Spring Boot那幾行配置而是證書信任模型的建立。你只要理解了證書、信任庫(kù)、私鑰、SSLContext這幾者的關(guān)系不管換什么框架、什么客戶端都能快速定位問題。我在實(shí)際項(xiàng)目中習(xí)慣把證書生成、導(dǎo)出、導(dǎo)入寫成一整套腳本放到運(yùn)維目錄里換人接手也不至于對(duì)著命令行發(fā)懵。開發(fā)環(huán)境可以偶爾用跳過校驗(yàn)偷懶但生產(chǎn)環(huán)境千萬(wàn)別在這種地方省事。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
无码少妇高潮喷水A片免费| 色噜噜五月天| 色婷婷女优有码五月亭| 久久五月天色婷婷| 欧美综合激情五月天| 91趴趴| 九九自拍网| 五月花综合| 日韩黄色中文字幕| 婷婷午夜天| 婷婷久久色| 26uuu国产精品| 亚洲亚洲人成综合网络| 超碰免费99| 五月丁香在线国产 | 噜噜噜噜噜日本视频| 九久久婷婷| 六月丁香五月婷婷| 插插插丁香五月婷婷| 日本人妻伦在线中文字幕| 色五月婷婷影院| 亚洲成人在线播放| 9精品国产在热久久| 天天干夜夜谢| 91精品久久久久久久| 5月婷婷激情6月| 日本情色一区二区| 天天日天天爽| 99视频精品| 99爱在线视频观看| 只有久久精品免费| 色久婷婷网| 五月伊人婷婷999| 综合久久99| 色婷婷AV在线| 女人天堂 AV| AV色五月婷婷| 久久这里只有精彩| 开心 五月 综合| 伊人超碰在线| 99在线免费观看| 无码字幕中文| 五月婷婷爽爽爽| 激情九月综合| 色激情五月| 丁香五月婷婷香| 久久综合伊人综合在线| 91操色| 久久婷婷网站| 97色婷婷| 高清激情av在线观看| 91丨九色丨国产打屁股| 婷婷综合在线| 婷婷五月天无码视频| 亚洲激情在线| 亚洲无aV在线中文字幕| 久久五月天视频| 国产原创视频91九色| 中文字幕无码人妻少妇免费视频 | 亚洲色五月| 怡红院院久久| 开心五月综合| 99re6久热只有精品6在线直播| 热这里| 蜜乳9188| 婷婷五月中文字幕国产| 啄木鸟丝袜美女福利视频| 丁香五月天五码婷婷| 91九色国产| 日本在线视频播放91| 色欧美影院| 91精品国产日韩91久久久久久国模| 欧美精品在线观看| 久久在这里有精品| 99色视频在线观看| 五月丁香六月成人| 婷婷久久综合久| 9久久精品| 91爱啪啪| http:色情日本com| 免费无码毛片一区二区A片 | 中文毛片无遮挡高潮免费| 婷婷五月天AV| 成人人操| 丁香五月婷婷动漫| 五月天综合在线观看| 久久婷婷五月天综合| 激情五月综合网最新| 色婷婷丁香五月在线观看| 丁香六月五月天| 婷婷国产成人| 99人妻碰碰碰久久久久禁片| 少妇人妻丰满做爰XXX| 琪琪布丁香社区激情五月天| #NAME?| 日韩操女| 日日撸天天干| 99热在线观看精品| 99色嘟嘟精品网站| 97狠狠色| 色色网站在线| 久久AAAA片一区二区| 丁香花大香蕉婷婷综合| 99色在线视频| 无码色色色| 91婷婷在线| 91碰| 日本五月视频| 天天操天天插| 婷婷丁香九月| 99热这里只有在线| 国产肥白大熟妇BBBB视频| 夜夜嗨一区二区三区直播内容| 涩涩激情五月婷婷| 春色激情第四色| 五月天婷婷小说| 丁香五月网站| 婷婷久久五月| 色色网91| 五月天激情AV| 五月丁香六月婷婷,婷| 超碰av在线| 青青999| 97自拍99| 丁香六月天婷婷色| 六月婷婷综合| 激情图片婷婷| 无码色综合| 成人婷婷色五月天| 天天色天天日| 99re这里只有精品99| 五月综合激情图片| 国产午夜一区二区三区| 熟女激情网| 亚洲AV成人无码久久精品老人法拉利| 67194国产| 色婷婷偷拍| 色五月成人网| 丁香婷婷狠狠97| 97色啪| 综合五月天天天天天五月| 婷婷97碰碰| 丁香婷婷激情综合五月激情| 狠狠人人| 公的粗大挺进了我的密道| 人人操操97| 激情婷婷丁香五月| 噼里啪啦完整版中文在线观看| 99日本精品视频热| 天天综合网站| 九九99在线视频| AV国产有码| AAA久久| 综合久久六月| 人人摸人人澡人人| 99碰网站| 可以免费观看的av| 日本va欧美va精品发布视频| 日韩色色视频| 婷婷久久久久| 亚洲激情区| 日本久久精品| 99热这里只有精品50| 99热婷婷| 天天橾日日橾夜夜橾17| 久久九九热re6这里有精品| 丁香五月天激情五月天激情五月天激情网 | 亚洲xx在线| 五月婷婷无码| www.久久久久| 狠狠色狠狠操| 久久婷婷五月丁香| www.五月丁香| 亚洲激情久久| 人妻熟妇六区| www九九免费视频| 色丁香综合影院| 97精品人人A片免费看| 六月婷婷无码观看| 久久婷婷桃花五月天| wwwxxx五月婷婷小说| www.色五月| 香蕉狠狠爱视频| 97干97色| 思思re视频在线| 69凹凸成人综合网| 99热精品观看| 婷婷色五月婷婷姐妹| 亚洲无AV在线中文字幕| 99热这里只有精品98| 欧美经典片免费观看大全| 激情五月丁香色婷婷| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 亚洲狠狠色丁香婷婷综合久久| 国产精典视频在线观看| 国产美女无遮挡裸体毛片A片| 五月丁色AV| 婷色五月天| 久久曰曰| 日韩美一级毛卡片| 五月天精品| 狠狠干2007| 123日本不卡在线| 激情六月天婷婷| 久久多色| 国产精产国品一二三在观看| 亚洲色婷婷| 丁香六月开心| 丁香五月激情月| 国产99久久久| 五月婷婷基地| 天天天天天色| 婷婷五月综合久久中文字幕| 热久综合| 婷婷婷婷婷婷婷婷| 亚洲色婷婷| 91无码一区人妻A片蜜| 久久人妻www| 五月丁香五月丁香五月丁香五月丁香91| 97自拍视频在线| 亚州美女| 五月天婷婷AV| 久久 视频这里只有精总| 成人免费在线电影| 996er热| av在线色五月丁香婷区久| 日本色色影院| 九色综合网| 操操人人| 97亚洲婷婷| 五月天成人网婷婷| 无码动漫AV| 欧美99热| 99超级碰免费视频| 五月丁香激情综合啪啪| 激情五月婷婷网| 99 频99热国里只有精品| 亚洲无码激情| 婷婷五月丁香综合桃花色网| 国产成人一区二区三区在线观看 | 九色亚洲| 欧洲MV日韩MV国产| 嫩草AV久久伊人妇女超级A| 国际国外精品欧洲南美洲专区无码不卡| 在线观看996精品| 国内外色色色色色成人视频| 夜夜做夜夜愛| 日本人妻A片成人免费看片| 丁香激情五月少妇| 激情网 五月天| 色噜噜狠狠色综合日日| www.久久久久| 一区色色色色网| 中文字幕在线人妻| 久久久久五月丁香| 91干婷婷| 婷婷婷久久| 成人午夜视频精品一区| www久久久久久久久久久| 五月成人天| 婷婷五月天熟妇| 五月激情精品视频| 丁香五月AV综合激情| 最新日本A片| 亚洲免费av观看| 天天操婷婷| 亚洲综合激情五月| 精品无吗va视频免费观看| 丁香五月 综合| 日本123区日韩欧美不卡在线看| 五月天婷婷色综合| 精品亚洲国产成AV人片传媒| 色五月丁香网| 99久热这里只有精品| 日本色狠狠| 婷婷色丁香六月| 91热er| 九月婷婷综合八月丁香在线观看| 婷婷婷五月天最新综合你懂的| 婷婷视频网| 九色婷婷| 亚洲综合狠狠艹| 色播婷婷五月天| 五月天激情久色| 思恩热国产视频右线观看| 日日骑夜夜撸| 99久久综合精品五月天| 婷婷伊人网| 日日干夜夜干| 97人人射| 久久色午夜在线导航| 欧美日韩中国| 成人片黄网站色大片免费毛片| 日本欧美成人片AAAA| 青青久久五月| 丁香婷色| 五月天伊人日日噜影片AV| 五月婷高清视频| 中文不卡一二三区| 夜夜久久综合网| 国产一级片| 97人人草| 久久婷婷免费| www.91操| 伊人狠狠干| www.99热日韩.com| 天天天天干| 国精产品一区一区三区免费视频| 色九九丁香九月色九九色| 久久婷婷七月丁香| 亚洲丁香花色| 五月花在线观看视频| 伊人久久大香线蕉av最新| 天天日天天操心| 色婷小说| 色婷婷激情小说网| 99这里只有精品|v| 激情五月天综合网| 日本激情91| 色色五月天激情| 婷婷成人综合五月| 激情综合网激情五月天| 色噜噜丁香| 99青青草99| www999日韩精品| 婷婷久久六月天| 久久久久人妻精选| 丁香五月天激情综合| 五月J香蕉婷婷| 久久艹99| 99热6色| 色综合激情| 热久91| 丁香六月婷婷综合激情欧美| 精品久久久999| 专区无日本视频高清8| 久久综合五月天激情小说网站 | 99综合视频一体| 婷婷五月天成人基地| 丁香婷婷五月综合色情| 99久扒热| 婷婷五月天堂一本在线| 久婷五月| 玖玖在线| 91综合色| 99久久精彩视频| 婷婷五月AV| 九九热99热| 9 1在线视频| 婷婷五月成年人| 丁香婷停五月激情综合深爱| 五月激情天| 91精产品自偷自偷综合| 天天日天天爽| 九色地址91视频| 丁香五月天的网址。| 国产精品国产成人国产三级| 五月婷视频久久| 99热97| 亚洲mm免费| 26UUU亚洲欧美| 五月婷婷激情五月| 丁香九月综合| 色999亚洲人成色| 99无码超碰| 五月丁香色婷婷色| 婷婷丁香色性爱| 亚洲婷婷成人五月天| 五月综合久久| 香蕉操亚洲| 99热这里| 激情综合五月天| 久久激情天堂| 五月婷在线观看| 亚洲国产精品VA在线看黑人| 91avse| www.久久爱.com| 日本在线视频播放91| 五月花婷婷| 婷婷丁香亚洲色综合91| 久热大香蕉| 国产成人av在线| 九月婷婷久久| 五月丁香好婷婷姑娘综合网| 91麻豆国产三级精品福利在线观看 | 婷婷亚洲激情在线观看视频| 人人肏逼视频在线一区二区| 五月丁香六月在线| 亚洲精品成人| 亚洲成av人影院| 久久婷婷五月天激情唯美| 午夜丁香久久久久久| 天堂草在线看www| 伊人久久大香线蕉AV最新午夜| 99色网站| 99re久热只有精品6在线直播| 欧美人与性动交CCOO| 婷婷五月俺要去| 玖玖91| 色五月AV| 五月天自拍网| 日本黄色在线观看| 天天做天天爱天天高潮| 五月天精品视频| 天天日夜夜欢| 丁香婷婷五月色综合| 婷婷噜噜| 精品视频这里只有精品| 9久久网| 在线播放中文字幕| A网在线欧洲| 久久码久久无清| 婷婷五月天视频免费在线观看| 丁香婷婷激情综合五月激情| 99热色综合| 五月丁香综合激情网| 色色亚洲无码| 99精品久久久久| 99日韩| 九月丁香五月婷婷| 国产中文亚洲欧美日韩性交| 99小视频在线观看| 欧美肉大捧一进一出免费视频| 五月天狠狠干| 久久久久久xxxxx| 色亭亭九月| 婷婷五月色天| 欧美影院| 丁香五月六月欧美| 久久er这里只有精品| 色五月婷婷丁香凹凸| 超碰免费99| 五月天综合区| 久久丁香五月综合六月激情红杏视频| 天堂综合久久| 久久99草五月婷婷| 午夜天堂一区人妻| 亚洲另类婷婷综合| 噜噜操操| 99这里只有精品|v| 国产精品久久久丁香五月八戒视频| 婷婷少妇激情| 色久影院| 亚洲av成人电影在线观看| 五月天社区| 婷婷五月免费视频| 五月丁香欧美综合免费视频| 色波激情五月天| 亚洲小电影在线观看黄999| AV中文网| 99熟女| 日日噜噜夜夜狠狠久久丁香六月| 婷婷网五月| 深爱五月激情网| 九九色综合网| 99自拍视频在线| 国内精品玖玖| 热的无码综合视频| 五月天久久www| 久久激情综合| 5月婷婷综合| 亚洲婷婷91丁香| 婷婷综合av| 91综合网| 五月婷综合| 久草九一| 久久精99| 色色五月婷婷久久| 色吊丝永久访问网址| 婷婷五月综合免费在线| 丁香五月天社区婷婷| 久9热插入| 日韩AC在线免费观看| 精品少妇人妻AV无码专区偷人| 五月天激情婷婷| 婷婷五月色| 五月激情六月丁香| 丁香五月综合| 日日激情网| 婷婷五月永远18免费久久久| 婷婷五月丁香av网站| 综合九九久久| 91日本在线| 九九视频网| 一区=区操屄高清大全av| 丁香花五月天| 丁香五月停停av| 久久久激情视频| 色五开心五月五月深深爱| 婷婷丁香综合成人| 亚洲激情婷婷| 精品99在线| 婷婷五月综激情| 99视频久久| 天天弄天天操| 亚洲精品无AMM毛片| 搡BBBB搡BBB搡五十| 日韩无码AV电影网站| 国产色色小草视频| 日韩综合久久| 亚洲激情校园| 这里只有精品免费视频在线观看 | 亚洲欧美一区二区三区爱爱动图 | 天天看A片| 欧美狠狠一在草| 噜一噜免费视频| 国内自拍97在线| 婷婷在线日韩综合| 玖玖激情五月天| 丁香五月婷婷啪啪| 婷婷五月天狠狠| 99热只有| 五月综合久久| www.99免费视频| 一起草AV| 最新丁香六月婷婷| 亚洲va成人va成人va在线观看| 久久大香蕉丁香| 青996青| 天天做天天爱天天爽夜夜揉| 亭亭五月天成人| 综合色色婷婷| 色婷婷精品视频在线播放| 亚洲色人妻| 天天免费成年人视频| 99性色| 色五月av| 免费啪啪啪网站| 婷婷激情五月| 色色99| 丁香激情网| 狠狠色九月| 亚洲综合字幕色色| 婷婷五月色情| 91久女| 噜噜噜噜噜在线| 久色网五月| 婷婷综合激情| 99视频在线观看网址| 人人摸人人射| 夜夜穞天天穞狠狠穞AV美女按摩| 五月综合丁香婷婷| 婷婷五月天免费视频在线观看| 丁香五月激情综合| 婷婷九月亚洲| 天天在线XXX| 99精品成人无码A片观看金桔| 18久久| 5月婷婷激情6月| 开心深爱激情网| 久久九九囯产| 操操操AV| 人妻激情久久| 我爱宗和色| 大香蕉久操| 性高潮久久久久久-九九九九九九九九九九热-成人AV | 九月色婷婷综合| 伊人大香蕉爱聚| 婷婷5月色| 五月丁香六月婷| 五月色婷丁香| 丁香五月婷婷综合啪啪| 99九九热在线观看| 欧美黄色韩日网| 亚洲狠狠丁香婷婷香蕉| 激情五月综合免费| 被男人添B超爽视频| 91一起艹| 九九热黄色| 婷婷六月视频| 激情综合网五月丁香| 欧美啪啪网| 五月丁香花婷婷玉莉AV| 伊人大香蕉综合在线| 激情五月天激情综合网| 婷婷丁香综合在线| 中文无码精品一区二区三区| 亚洲日韩久久婷婷伊人| 五月WWW| AV在线不卡播放| 内射丰满人妻| 国产毛片操B| 五月婷婷无码专区| 性色做爰片在线观看WW| www.人人操人人看人人想人人摸 人人人人操,COM | 色色免费网战视频| 日韩av高清| 丁香月六月| www.99热精品| 大香蕉久艹| 综合激情五月丁香| 亚洲精品99| 精品婷婷五月天| http:色情日本com| 五月婷婷之美女图片| 亚洲第二AV| 婷婷五月丁香五月综合网| 激情五月天第四色| 人妻操逼视频| 九九色中文| 欧美日韩999| site:picc-up.com| 99色免费| 五月丁香香蕉| 五月永久激情| 五月综合激情网| 五月天色丁香| site:xmssd.com| 国产精品久久久久久久久久| 久色婷婷200| 黄色三级日本| 婷婷五月天国产传媒| 色五月综合| 99ri视频| 五月激情综合婷婷| 五月丁香色色| 婷婷爱五月天人人爱| 色哟哟www| 大香蕉手机视频| 色色网站| 小视频aaa久久久| 婷婷五月丁香99| 久热无码| 丁香六月无码| 青草青草久热这里只有精品| www.丁香黄色五月天人与| 久久大香蕉同僚| 色色网站在线免费观看视频| 婷综合六月| 综合婷婷| 成人电影AV在线观看| 激情网五月天| 日日夜夜狠狠操| 99re热视频这里只有综合亚洲| 九九久久9 9在线观看| 99爽视频| 日日夜夜久| 亚洲精品色色| 在线超碰91| 懂色av粉嫩av蜜臀av| 超碰在线9| 伊人六月丁香婷婷| 狠狠色丁香五月婷巨| 五月婷婷性爱网| 国产在这里只有精品| AV79| 熟女色专区| 91精品无码久久久久久五月天| 国产精品18久久久| 9l视频自拍9l九色成人| 五月婷激情| 久久有码| 春色激情第四色| 丁香婷婷色| 久操大屁股女人av| 亚洲9久久精品| 婷婷色色网| 99热精品99| 久久精热| 丁香五月综合在线观看| 婷婷玉月丁香五月在线视频| 97干97色| 五月婷婷导航| 欧美婷婷综合网| 久久婷婷热| 91碰| WWW免费视频碰碰碰碰| 99热777| 色五月丁香婷婷综合| 丁香六月婷月91婷月| 91丨九色丨高潮丰满日本| 久久九九@| 国产免费av在线| 9久9久9久女女女九九九一九| 久色精品| 欧美成人猛片AAAAAAA| 四色永久成人网站| 香蕉久久国产AV一区二区| 色婷婷激情| 久久婷婷成人综合色怡春院| 五月丁香啪啪啪| 六月丁香综合| 婷婷久热| 少妇丁香婷婷 | 日韩性视频| 婷婷色色丁香五月天| 色综合大香蕉| 99久re热视频精品98| 任你爽免费视频| 丁香婷婷九月| 五月婷视频久久| 九九热色视频| 欧洲亚洲免费视频9| 99久久久久| 色色色综合网| 激情六月五月婷婷综合网| 狠狠操狠狠狠| 婷婷色五月在线视频| 日韩啊啊啊| 婷婷五月丁香综合| 日本三级大片| 两性婷婷丁香五月| 婷婷五月丁香欧洲| 超碰在线人妻| 欧美性爱特黄一级aaaassss| 激情www| 婷婷的色色五月天| 激情五月六月婷婷| 操逼五月婷婷| 九九久久免费视频44| 色拍九九九| 婷婷五月色综合| 人人干天天舔| 开心六月丁香五月婷婷| 婷婷射婷婷舔| 九九综合九九| 嫩草免费视频| 影视av久久久噜噜噜噜噜三级| 99在线精品观看99| 伍月婷丁香婷| 九九热这里| 久热伊人| 婷婷丁香综合色AV| 丁香五月天啪啪| 操逼亚洲天堂| 亚洲五月婷婷| 五月丁香狠狠| 人人97碰| 无毒黄色网址| 97人人射| 操人妻视频91| 天天射影院| 亚洲av网址| 午夜色色色极品视频| 婷婷深爱五月丁香| 欧美激情综合色综合啪啪五月| 九色综合网| 色五月婷婷色| 停停五月丁香| 色五月激情综合网| 狠狠色狠狠色综合日日91| www.99热| 97干在线播放| 亚洲九九99精品视频在线播放| 色狠狠999综合| 天天干天天叉| 色久综合| 97狠狠色| 五月丁香六月婷| 无码少妇高潮喷水A片免费| 色五月激情综合| 无月播播激情在线观看视频| 99ri精品| 热久69| 亚洲小视频| 日产精品一线二线三线芒果| 丁J香六月首页| 狠狠干五月丁香| 欧美精品999| 婷婷五月激情的图片| 韩国三级五月天婷婷。| 欧美韩国日本| 天天草狠狠擦| 九九在线精品| 人妻AV在线观看| 天堂综合久| 六月丁香AV| 色婷婷五月天中文字幕| 激情五月天视频| 色色色色色五月| 人人干人人操人人摸| 色欲色欲久久宗合网| 丁香色六月婷婷| 97色色色| 日本人妻A片成人免费看片| 婷婷 色 丁香 夜| 色99www.| www.婷婷五月天.com| 亚洲色频| 欧美高潮9| 天天干夜夜欢| 色噜婷婷| 深夜激情网| 在线视频九色97| 韩国三级五月天婷婷。| 九久久九精品视频| 永久思思热在线| 大香蕉久| 九九视频这里是精品五月| 99色综合| 91免费在线视频6| 五月天激情网站| AV天堂淫乩| 九九亚洲| 五月综合在线婷婷图片| 在线视频婷婷| 人妻VideOssS人妻高清| 丁香激情五月少妇| 亚洲碰碰碰| 五月丁香激情四射| 激情五月天综合网| 五月久久噜噜| 人妻丰满精品一区二区A片| 丁香五月天欧美| 九月激情婷婷丁香| 九九热最新| 26UUU欧美激情一区二区| 婷婷精品在线| 精品无码色欲AV| 久久免费少妇高潮99精品| 色五月天电影| 99久久久免费| 2018国产大陆天天弄| 99热在线观看亚洲区| 丁香六月av| 婷婷五月丁香五月| 五月丁香六月色情网欧美| 黄色网址五月婷婷| 操操天堂| 婷婷五月丁香av网站| 色5月丁香婷婷| 玖热精品综合视频| http://www.com久久久精品一区| 丁香五月天天高清在线| 六月婷婷七月丁香| 九九色逼| 岛国资源网| 久久码久久无清| 99精品热| 天天色天天噜| 99ri精品在线| A片试看50分钟做受视频| 亚洲岛国电影| 五月婷婷六月丁香综合| 综合久久8| 久久综合五月天| 激情五月天色婷婷综合| 久久9热| 欧美色婷婷| 五月婷色激情五月| 久色网址| 伊久大香蕉| 99精品在线观看视频| 4399欧美另类视频| 色爆五月| 久久久久亚洲AV成人无码电影| 亚洲人人96@| 一区二区传媒视频| 九九久久精品| 激情综合国产| 婷婷五月天亚洲精品| 六月激情婷婷| 九色成人AV在线| 婷婷六月五月| 丁香婷婷六月天| 五月丁香欧美综合| 国产女人十八水真多1| 狠狠操狠狠操| 丁香婷婷六月激情| 九九综合伊人| av首页在线| 免费视频WWW在线观看网站| 久色激情| 五月综合婷婷网| 久久婷婷色情7777网站| 超碰国产一区| 丁香五月激情综合| 亚洲网站999| 少妇人妻凹凸视频| 人人爱干人人爱草| 婷婷久久欧美| 伊人综合网站| 久久久婷| 日本天堂免费99| 伊人网色婷婷五月天| 天天搽天天射| 天天操夜夜爽天天操| 色色欧美色色色| 国产欧美精品AAAAAA片| 可以直接看的av| AV成人在线播放| 殴美综合激情五月天免费视频| 夜夜爽日日躁| 五月丁香五月激情综合色综合| 97在线综合| 黄色五月婷婷| 久久婷婷东京热| 1769在线观看欧美国产| 欧美97超碰| 色综合久久天天综合网 | 婷婷丁香五月天操逼| 中文人妻AV久久人妻18| 久久99久久99精品免观看粉嫩| 99综合| 丁香婷婷色| 五月色色激情网| 开心婷婷五月天电影院| 日韩黄色网络| 色色色在线观看| 激情五月婷黄版| 色五月激情综合| 婷婷五月天性爱视频| 久久99日本精品视频免费观看| 日本久久色| 五月激情六月综合| 狠狠狠狠狠狠| AA丁香综合激情| 熟女人妻视频| 亚洲偷| 神马久久五月天| av一区二区电影免费在线观看| 99超超碰| 婷婷五月丁香性爱| 丁香六月亚洲| 男人天堂99| 色播综合| 五月婷婷丁香成人网| 五六月婷婷| 色色色99韩| 日韩按摩二区| 色综合婷婷| 九九熱最新視頻| 丁香五月亭亭六月综合激情网| 色天天久婷婷| 亚洲噜色| 五月丁香色六月激情干大屄| 99亚洲精品| 4399在线日本A片| 激情五月天小说网| 丰满少妇猛烈A片免费看观看| 亚洲亚洲人成综合网络| 99热在线极品极品| 五月婷婷综合在线视频| 成人免费高清在线播放| aaaaaa片| 婷婷在线免费| www.ppypp| 久久精品视频在这里有| 91综合色| 99久久九九视频| 五月婷中文娱乐综合| 99人人干| 婷婷色色播五月天| 99热国产免费| 97五月天| 中文不卡av| 久热99热| 狠狠色情婷婷| 99热精品在这里| 99热综合在线| 天天视频亚洲| 九九色影视| 久在线综合69| 色欲婷婷五月天| 丁香五月婷在线观看| 一区二区免费看| 91婷婷在线| 五月天激情久久| 天天色2017| 超碰中文字幕在线| 婷婷五月综合婷婷| 丁香五月天激情视频| 精品人妻一区二区三区四区不卡在| 欧美日本韩国亚洲| 色婷婷亚洲在线观看| 九九蜜臀精品| 六月婷婷色| 国产欧美熟妇另类久久久| 激情婷婷综合网| 青青热久久综合| 亚洲操B| 最近免费中文字幕大全高清大全1| 婷婷99视频全集高清| 97在线/亚洲| 亭亭五月色男人| 九九黄色网| 亚洲不卡| 丁香婷婷五月| 人妻丰满精品一区二区A片| 91日视频| 欧美五月婷婷| 五月天啪啪| 五月婷婷偷拍| 国产女18毛片多18精品| 激情图片亚洲| 99久久玖玖| av操B网站| 婷婷五月天视频在线观看| 久久色天堂| 亚洲婷婷五月| 丁香五月婷婷激情中文| 99热| 九九热在线观看6| 五月激情丁香| 日本人妻伦在线中文字幕| 狠狠搞五月天| 99热天堂| 久9热视频| 五月丁香人妻| 久久婷婷免费| 深爱开心激情网| 97AV在线视频| 激情五月天综合网| 涩综合网| 激情婷婷九月| 99在线热视频| 婷婷伊人綜合| 婷婷亚洲丁香五月| 99久久婷婷国产综合精品草原| 婷婷色色亚洲| 99在线观看免费精品视频| 色九九综合| 99干日本| 久久色天堂| 日韩成人中文字幕| 激情综合区| 日本九九九九| 色婷婷欧美| 97色片| 精品网站:999WWW| 襙比视频| 日本不卡高字幕在线2019| 丁香五月激情婷婷激情| 天天干天天做| www.色五月天.com| 西西4r午夜剧场| 日本熟女一区二区| 成人AV片播放| 色噜噜狠噜噜视频| 操逼巨乳91| 超碰在线99| 天天日天天添| 色一情一乱一乱一区91Av| 日韩草草草草草草草草草草草草| 五月天大香蕉| 天天日日天天| 无码一区二区三区四区五区91c| 五月草影视| 色婷婷五月天成人网| 久久婷婷激情| 色婷婷五月天av在线| 337p大胆噜噜噜噜噜91Av| 色久五月| 97干资源在线观看| 欧美色色色色色| 99综合色色色| 国产毛片精品一区二区色欲黄A片| 婷婷五月天,影院| 一本九九色| 2017狠狠干| 久久综合网免费视频| 99热在线观看| 欧美日本va| 91精品国产99久久久久久天美| 男人的天堂五月丁香| 日韩综合天堂| 日日影院 | 东北婷婷五月天| 欧美日韩成人在线免费| 超碰人人色| 五月天开心成人网| 另类少妇人与禽zOZZ0性伦| 久久只有18视频| 亚洲AV无码成人精品区电影网| 色色色色色综合| 国产99美少妇| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 色婷婷五月丁香在线观看| 婷婷91视频| 四月婷婷丁香五月| 午夜理论片最新午夜理论剧| 五月天社区| 99热这里是精品| 久久精品99久久| 五月婷婷六月丁香| 丁香涩涩爱| 婷婷丁五月| 色婷婷aV四虎| 九九成人视频| 五月丁香六月激情| 色色色视频免费无码 | 伊久久婷婷| 啪啪日本欧美| 五月天激情图片| 丁香五月激情宗合| 亚洲深喉aV| 99热这里只有精品4| 性天天中文网| 操久久精| 狼人久草| 香蕉综合在线| 五月丁香在线观看国产| 日本三级中国三级99人妇网站| 五月丁香大相交| 久久99精品久| 国产毛片精品一区二区色欲黄A片| 2025天天爽天天摸| 婷婷黄色| 无码动漫av| 五月深情久久| 最近中文字幕2019视频1| 丁香六月啪啪| 精品无吗va视频免费观看| 小视频在线亚洲| 日韩 中文 欧美| 成人在线观看一区| 1024亚洲无码| 中字幕视频在线永久在线观看免费| 大香蕉九操| ji'qi'luan'ren'lun| 麻豆五月丁香婷婷| .操區COm| 伊人色综合影院视频| 免费播放AV| 任你爽在线视频| 亚洲精品久久久久久久久久吃药| 亚洲婷婷五月天| 欧美婷婷五月激情| 视频免费精品免费精品免费精品免费精品免费精品免费精品免费99 | 九月丁香很很色| 激情综合五月| 天天综合色| 精品乱码久久久久| 亚州AV超碰人人操| wwccc久久久| 色天天综合色| 丁香香五月激情免费视频| 五月天天天操天天爽夜夜操| 久久中文人妻系列| 97超碰人人操| 99re在线视频精品,这里只有精品18,| 日熟女| www.ywav| 久久全意婷婷| 色五月激情问网站| 国产精产国品一二三在观看| 超碰在线成人| 中文AV网站| 亚洲色五月婷婷| 国产精品成人在线| 九九激情综合| www.五月天婷婷| 香蕉人在线香蕉人在线 | 99热r| 丁香五月天激情综合| 99热.com| caopeng97日韩| 26UUU精品一区二区Com| 激情久久久| 国内婷婷丁香社区在线播放| 婷婷丁香视频在线观看免费| 97色色色色| 五月婷婷久久爱| 思思久久96热在精品国产,| 五月婷婷六月激情网| 天天cha成人综合网| 婷婷色欧美激情| 美国色五月天婷婷资源站| 日本人人xxx| 亚洲国产成人在线| 婷婷午夜| 午夜不卡久久精品无码免费| 亚洲亚洲人成综合网络| 熟女人妻一区二区三区免费看| 激情五月婷婷老师| 无毒黄色网址| 免费国产视频| 婷香五月| 五月婷综合性中心| 丁香五月婷婷在线| 日韩人妻无码精品| 99精品在线| 狠狠色噜噜狠| 狠狠干综合网| 色婷婷av在线| av 一区三区四区| 天天色综合网1| 五月综合色| 一起草性爱不卡视频| 99九九精品| 丁香婷婷老熟女综合网| 牛牛色av| 久9视频| 99热这里有精品2| 天天爽,夜夜爽| 日韩成人av在线| 91中文狠狠综合| www久久久久久| 日韩无码专区| 91dy.av| 99久久婷| 操操综合网婷婷| 熟女91九色| 激情的五月| 五月天激情国产综合婷婷| 久久人妻精品| 123日本不卡在线| 精品99在线| 色五月天在线| 欧美va在线| 五月婷婷色| 国内一级精品| 插插插色综合网| 99热这里只有精品9| 中文字幕 中文字幕明步| 六月丁香狠狠爱| 五月婷婷精品视频| 9999三级片| YW无码| 色综合五月在线| 久婷婷婷| 亚洲无码影音| 性爱网六月丁香| 五月天婷婷色小说| 小视频久久久aaa| 一区操| 久久性爱网站| 天天日天天舔| 九色在线五月婷婷网址| 66精品国产成人| 亚洲精品激情| 桃色五月婷婷| 五月天基地| 天天干天天色天天干| 99热超碰| 97综合在线| 直接看的av| 五月丁香激情综合网官网| 婷婷五月综合激情| 狠狠狠色激情综合适合| 影音先锋自拍网| 综合99久久天天综合| 玖玖资源天天无码| 久久五月丁香| 婷婷爱爱蜜臀天天操| 色婷婷五月在线| 久久综合丁香激情五月| 五月丁香六月婷婷国产视频| 人妻熟人中文字幕一区二区| 99热在线精品观看| 五月精品免费XXX| 色色五月婷婷| 久久久999精品| 26uuu精品一区二区| 中文超碰视在线| 亚洲婷婷丁香五月亚洲| www.99视频| 99在线观看| 丁香五月天啪啪| 色婷婷五月色| 丁香六月综合| 男女免费视频999| 五月丁香啪| 综合日本婷婷| 狠狠穞A片一區二區三區| www91精品| 五月丁香777| 青青操日本摸摸看看| 天堂婷婷丁香六月网| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 五月天综合缴情网网站0| 五月婷婷丁香六月| 这里只有精品,日韩视频| 国产亚洲精品AAAA片APP| 嫩BBB槡BBBB搡BBBB视频| 国产精品第一国产精品|