最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot配置HTTPS的詳細(xì)步驟

 更新時(shí)間:2026年03月25日 08:57:59   作者:希望永不加班  
本文介紹了配置SpringBoot項(xiàng)目HTTPS的全流程,包括開發(fā)環(huán)境生成自簽名證書和生產(chǎn)環(huán)境配置正式SSL證書,以及配置HTTP自動(dòng)跳轉(zhuǎn)HTTPS以提升用戶體驗(yàn),注意事項(xiàng)和常見問(wèn)題也一并進(jìn)行了說(shuō)明,需要的朋友可以參考下

做項(xiàng)目時(shí),只要涉及“用戶登錄、支付、敏感數(shù)據(jù)傳輸”,就必須用 HTTPS——否則數(shù)據(jù)在網(wǎng)絡(luò)上明文傳輸,很容易被劫持、篡改。

HTTPS 是不是只能買證書?自簽名證書能不能用?SpringBoot 里怎么配?

今天就把 SpringBoot 配置 HTTPS 的全流程講透:

  • 開發(fā)環(huán)境:生成自簽名證書(免費(fèi),不用花錢);
  • 生產(chǎn)環(huán)境:配置正式 SSL 證書(阿里云/騰訊云免費(fèi)申請(qǐng));
  • 額外技巧:配置 HTTP 自動(dòng)跳轉(zhuǎn) HTTPS(用戶輸 http 也能自動(dòng)到 https)。

純實(shí)操,跟著做就能搞定,再也不用怕“HTTPS 配置報(bào)錯(cuò)”。

先搞懂核心:HTTPS 證書的兩種類型

證書類型自簽名證書(開發(fā)/測(cè)試用)正式 SSL 證書(生產(chǎn)用)
核心特點(diǎn)自己生成,免費(fèi),瀏覽器會(huì)提示“不安全”權(quán)威機(jī)構(gòu)簽發(fā),免費(fèi)/付費(fèi),瀏覽器信任
適用場(chǎng)景本地開發(fā)、測(cè)試環(huán)境生產(chǎn)環(huán)境、對(duì)外提供服務(wù)的項(xiàng)目
獲取方式用 JDK 的 keytool 命令生成阿里云/騰訊云/Let's Encrypt 申請(qǐng)
瀏覽器表現(xiàn)標(biāo)紅、提示“證書不受信任”顯示綠色小鎖,提示“安全”

一句話總結(jié):開發(fā)用自簽名(省錢、方便),生產(chǎn)用正式證書(安全、用戶體驗(yàn)好)。

開發(fā)環(huán)境——生成自簽名證書

JDK 自帶 keytool 工具,不用裝額外軟件,一行命令就能生成證書。

第一步:生成自簽名證書

打開命令行(Windows 用 cmd,Linux/Mac 用終端),執(zhí)行以下命令:

# 生成 JKS 格式證書(SpringBoot 推薦格式)
keytool -genkeypair-alias springboot-https -keyalg RSA -keysize2048-storetype JKS -keystore springboot-https.jks -validity3650

命令參數(shù)解釋(不用記,直接復(fù)制用):

-alias:證書別名(隨便起,比如 springboot-https);

-keyalg:加密算法(RSA,通用);

-keysize:密鑰長(zhǎng)度(2048,足夠安全);

-storetype:證書格式(JKS,SpringBoot 支持);

-keystore:證書文件名(springboot-https.jks);

-validity:有效期(3650 天,約10年)。

執(zhí)行命令后,會(huì)提示輸入信息,按提示填(開發(fā)環(huán)境隨便填,不用真實(shí)信息):

輸入密鑰庫(kù)口令: 123456 (設(shè)置證書密碼,記下來(lái),后面要用到)
再次輸入新口令: 123456
您的名字與姓氏是什么?  [Unknown]:  localhost
您的組織單位名稱是什么?  [Unknown]:  dev
您的組織名稱是什么?  [Unknown]:  test
您所在的城市或區(qū)域名稱是什么?  [Unknown]:  beijing
您所在的省/市/自治區(qū)名稱是什么?  [Unknown]:  beijing
該單位的雙字母國(guó)家/地區(qū)代碼是什么?  [Unknown]:  CN
CN=localhost, OU=dev, O=test, L=beijing, ST=beijing, C=CN 是否正確?  [否]:  y
輸入的密鑰口令: (直接回車,和密鑰庫(kù)口令一致)

執(zhí)行完成后,當(dāng)前目錄會(huì)生成 springboot-https.jks 文件(這就是自簽名證書)。

第二步:把證書放到項(xiàng)目里

把生成的 springboot-https.jks 復(fù)制到 SpringBoot 項(xiàng)目的 src/main/resources 目錄下(方便讀?。?。

第三步:配置 application.yml 啟用 HTTPS

server:
port:443# HTTPS 默認(rèn)端口是 443(不用8080了)
ssl:
# 證書路徑(resources 下的 jks 文件)
key-store: classpath:springboot-https.jks
# 證書格式(JKS)
key-store-type: JKS
# 證書別名(和生成時(shí)的 -alias 一致)
key-alias: springboot-https
# 證書密碼(生成時(shí)設(shè)置的 123456)
key-store-password:123456

第四步:?jiǎn)?dòng)項(xiàng)目,測(cè)試 HTTPS

  1. 啟動(dòng) SpringBoot 項(xiàng)目,日志里沒(méi)有報(bào)錯(cuò),說(shuō)明配置成功;
  2. 打開瀏覽器,訪問(wèn) https://localhost(不用加端口,443 是默認(rèn)端口);
  3. 瀏覽器會(huì)提示“您的連接不是私密連接”(自簽名證書的正?,F(xiàn)象),點(diǎn)擊“高級(jí)”→“繼續(xù)訪問(wèn)localhost(不安全)”;
  4. 能正常訪問(wèn)接口,說(shuō)明 HTTPS 配置成功。

開發(fā)環(huán)境小技巧:如果想去掉瀏覽器的“不安全”提示,可以把自簽名證書導(dǎo)入瀏覽器(具體步驟因?yàn)g覽器而異,開發(fā)環(huán)境可忽略,不影響功能)。

生產(chǎn)環(huán)境——配置正式 SSL 證書

生產(chǎn)環(huán)境不能用自簽名證書(用戶看到“不安全”會(huì)不敢訪問(wèn)),需要用權(quán)威機(jī)構(gòu)簽發(fā)的正式證書。

第一步:申請(qǐng)正式 SSL 證書(以阿里云為例,免費(fèi))

  1. 登錄阿里云官網(wǎng) → 搜索“SSL 證書” → 進(jìn)入證書管理控制臺(tái);
  2. 點(diǎn)擊“購(gòu)買證書” → 選擇“免費(fèi)版 DV SSL”(個(gè)人/小企業(yè)夠用) → 提交訂單(免費(fèi));
  3. 填寫域名(比如 www.xxx.com) → 驗(yàn)證域名(阿里云會(huì)自動(dòng)驗(yàn)證,不用手動(dòng)操作);
  4. 驗(yàn)證通過(guò)后,下載證書(選擇“Tomcat”格式,下載后是 zip 包)。

第二步:處理正式證書(轉(zhuǎn)換成 JKS 格式)

阿里云下載的證書包含 xxx.pem 和 xxx.key 文件,需要轉(zhuǎn)換成 SpringBoot 支持的 JKS 格式:

  1. 解壓下載的 zip 包,得到兩個(gè)文件:www.xxx.com.pem(公鑰)、www.xxx.com.key(私鑰);
  2. 用 OpenSSL 工具轉(zhuǎn)換成 PKCS12 格式(先裝 OpenSSL,Windows 可下載 OpenSSL 安裝包):```bash openssl pkcs12 -export -in www.xxx.com.pem -inkey www.xxx.com.key -out www.xxx.com.p12 -name springboot-https ```
  3. 用 keytool 把 PKCS12 轉(zhuǎn)換成 JKS 格式:```bash keytool -importkeystore -srckeystore www.xxx.com.p12 -srcstoretype PKCS12 -destkeystore www.xxx.com.jks -deststoretype JKS ```
  4. 輸入密碼(設(shè)置一個(gè)新密碼,記下來(lái)),完成轉(zhuǎn)換,得到 www.xxx.com.jks 文件。

第三步:配置生產(chǎn)環(huán)境 HTTPS

  1. 把 www.xxx.com.jks 復(fù)制到項(xiàng)目 src/main/resources 目錄;
  2. 修改 application.yml(生產(chǎn)環(huán)境配置):```yaml server:   port: 443  # 生產(chǎn)環(huán)境 HTTPS 默認(rèn)端口   ssl:     key-store: classpath:www.xxx.com.jks  # 正式證書文件名     key-store-type: JKS     key-alias: springboot-https  # 和轉(zhuǎn)換時(shí)的 -name 一致     key-store-password: 你的證書密碼  # 轉(zhuǎn)換時(shí)設(shè)置的密碼     # 可選:開啟 HTTP2(提升性能)     http2:       enabled: true ```
  3. 打包部署項(xiàng)目,訪問(wèn) https://www.xxx.com,瀏覽器會(huì)顯示綠色小鎖,提示“安全”。

高級(jí)技巧——HTTP 自動(dòng)跳轉(zhuǎn) HTTPS

用戶可能會(huì)輸入 http://www.xxx.com(HTTP),需要自動(dòng)跳轉(zhuǎn)到 https://www.xxx.com(HTTPS),配置如下:

第一步:配置 HTTP 端口(比如 80)

server:
port:443# HTTPS 端口
ssl:
# 省略 HTTPS 證書配置...
# 配置 HTTP 端口(80)
http:
port:80

第二步:添加跳轉(zhuǎn)配置類

importorg.apache.catalina.Context;
importorg.apache.catalina.connector.Connector;
importorg.apache.tomcat.util.descriptor.web.SecurityCollection;
importorg.apache.tomcat.util.descriptor.web.SecurityConstraint;
importorg.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
importorg.springframework.boot.web.servlet.server.ServletWebServerFactory;
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
@Configuration
publicclassHttpsConfig{
// 配置 HTTP 端口(80)
@Value("${server.http.port:80}")
privateint httpPort;
// 配置 HTTPS 端口(443)
@Value("${server.port:443}")
privateint httpsPort;
// 核心:創(chuàng)建 HTTP 連接器,自動(dòng)跳轉(zhuǎn) HTTPS
@Bean
publicServletWebServerFactoryservletWebServerFactory(){
TomcatServletWebServerFactory tomcat =newTomcatServletWebServerFactory(){
@Override
protectedvoidpostProcessContext(Context context){
SecurityConstraint securityConstraint =newSecurityConstraint();
                securityConstraint.setUserConstraint("CONFIDENTIAL");// 強(qiáng)制使用 HTTPS
SecurityCollection collection =newSecurityCollection();
                collection.addPattern("/*");// 所有路徑都跳轉(zhuǎn)
                securityConstraint.addCollection(collection);
                context.addConstraint(securityConstraint);
}
};
// 添加 HTTP 連接器
tomcat.addAdditionalTomcatConnectors(createHttpConnector());
return tomcat;
}
// 創(chuàng)建 HTTP 連接器
privateConnectorcreateHttpConnector(){
Connector connector =newConnector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL);
        connector.setScheme("http");
        connector.setPort(httpPort);// HTTP 端口
        connector.setSecure(false);
        connector.setRedirectPort(httpsPort);// 跳轉(zhuǎn)到 HTTPS 端口
return connector;
}
}

配置完成后,訪問(wèn) http://www.xxx.com 會(huì)自動(dòng)跳轉(zhuǎn)到 https://www.xxx.com,用戶體驗(yàn)更好。

必避的 4 個(gè)坑

證書密碼錯(cuò)誤
啟動(dòng)報(bào)錯(cuò) java.io.IOException: Keystore was tampered with, or password was incorrect;
解決:核對(duì) key-store-password 是否和生成/轉(zhuǎn)換證書時(shí)的密碼一致。

證書別名錯(cuò)誤
啟動(dòng)報(bào)錯(cuò) Alias name springboot-https does not exist;
解決:key-alias 必須和生成證書時(shí)的 -alias 一致。

端口被占用
443/80 端口被其他程序占用(比如 IIS、Nginx),啟動(dòng)報(bào)錯(cuò) Address already in use;
解決:要么殺掉占用端口的進(jìn)程,要么臨時(shí)改端口(比如 HTTPS 用 8443,HTTP 用 8080)。

正式證書域名不匹配
訪問(wèn) https://xxx.com 提示“證書域名不匹配”;
解決:申請(qǐng)證書時(shí)的域名必須和訪問(wèn)的域名一致(比如申請(qǐng) www.xxx.com,就不能用 xxx.com 訪問(wèn))。

生產(chǎn)環(huán)境額外建議

證書過(guò)期提醒:正式證書有有效期(免費(fèi)版一般1年),記得提前續(xù)期;

Nginx 反向代理 HTTPS:生產(chǎn)環(huán)境建議用 Nginx 配置 HTTPS(性能更好),SpringBoot 只處理業(yè)務(wù)邏輯;

禁用 HTTP 端口:如果不需要跳轉(zhuǎn),直接禁用 80 端口,只開放 443;

配置 SSL 協(xié)議:只啟用 TLS 1.2/1.3(禁用老的 SSLv3/TLS 1.0),提升安全性:```yaml server:   ssl:     enabled-protocols: TLSv1.2,TLSv1.3     ciphers: ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256 ```

最后說(shuō)兩句

HTTPS 配置看似復(fù)雜,核心就三步:

  • 開發(fā)環(huán)境:用 keytool 生成自簽名證書,配置 443 端口;
  • 生產(chǎn)環(huán)境:申請(qǐng)正式證書,轉(zhuǎn)換成 JKS 格式,配置 HTTPS;
  • 可選:配置 HTTP 自動(dòng)跳轉(zhuǎn) HTTPS,提升用戶體驗(yàn)。

不管是自簽名還是正式證書,配置邏輯都是一樣的——只是證書的來(lái)源不同。做好 HTTPS 配置,是保障項(xiàng)目數(shù)據(jù)安全的基礎(chǔ),也是生產(chǎn)環(huán)境上線的必備條件。

以上就是SpringBoot配置HTTPS的詳細(xì)步驟的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot配置HTTPS的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 關(guān)于java編譯過(guò)程中的bug說(shuō)明

    關(guān)于java編譯過(guò)程中的bug說(shuō)明

    本篇文章是對(duì)java編譯過(guò)程中的bug進(jìn)行了詳細(xì)的說(shuō)明介紹,需要的朋友參考下
    2013-05-05
  • Spring JdbcTemplate整合使用方法及原理詳解

    Spring JdbcTemplate整合使用方法及原理詳解

    這篇文章主要介紹了Spring JdbcTemplate整合使用方法及原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 圖文詳解JAVA實(shí)現(xiàn)快速排序

    圖文詳解JAVA實(shí)現(xiàn)快速排序

    這篇文章主要給大家介紹了關(guān)于JAVA實(shí)現(xiàn)快速排序的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • Java線程池的四種拒絕策略詳解

    Java線程池的四種拒絕策略詳解

    jdk1.5 版本新增了JUC并發(fā)編程包,極大的簡(jiǎn)化了傳統(tǒng)的多線程開發(fā),下面這篇文章主要介紹了Java線程池的四種拒絕策略的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • Java實(shí)現(xiàn)數(shù)字金額轉(zhuǎn)換為中文大寫金額的完整指南與優(yōu)化技巧

    Java實(shí)現(xiàn)數(shù)字金額轉(zhuǎn)換為中文大寫金額的完整指南與優(yōu)化技巧

    在金融、財(cái)務(wù)和商務(wù)系統(tǒng)中,將數(shù)字金額轉(zhuǎn)換為中文大寫金額是一項(xiàng)常見需求,中文大寫金額能有效避免篡改和歧義,是合同、發(fā)票等正式場(chǎng)景的規(guī)范要求,本文將通過(guò)Java實(shí)現(xiàn)這一功能,需要的朋友可以參考下
    2025-12-12
  • SpringBoot項(xiàng)目執(zhí)行腳本 自動(dòng)拉取最新代碼并重啟的實(shí)例內(nèi)容

    SpringBoot項(xiàng)目執(zhí)行腳本 自動(dòng)拉取最新代碼并重啟的實(shí)例內(nèi)容

    在本篇文章里小編給大家整理的是一篇關(guān)于SpringBoot項(xiàng)目執(zhí)行腳本 自動(dòng)拉取最新代碼并重啟的實(shí)例內(nèi)容,有需要的朋友們參考下。
    2019-12-12
  • Spring?Boot中自動(dòng)執(zhí)行sql腳本的方法實(shí)例

    Spring?Boot中自動(dòng)執(zhí)行sql腳本的方法實(shí)例

    在SpringBoot的架構(gòu)中,DataSourceInitializer類可以在項(xiàng)目啟動(dòng)后初始化數(shù)據(jù),我們可以通過(guò)自動(dòng)執(zhí)行自定義sql腳本初始化數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Spring?Boot中自動(dòng)執(zhí)行sql腳本的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • java如何測(cè)試網(wǎng)絡(luò)連通性

    java如何測(cè)試網(wǎng)絡(luò)連通性

    這篇文章主要為大家詳細(xì)介紹了java測(cè)試網(wǎng)絡(luò)連通性的兩種方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Java處理異常2種機(jī)制關(guān)鍵字區(qū)別解析

    Java處理異常2種機(jī)制關(guān)鍵字區(qū)別解析

    這篇文章主要介紹了java處理異常2種機(jī)制關(guān)鍵字區(qū)別解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Java實(shí)現(xiàn)隊(duì)列的三種方法集合

    Java實(shí)現(xiàn)隊(duì)列的三種方法集合

    這篇文章主要介紹了Java實(shí)現(xiàn)隊(duì)列的三種方法集合,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09

最新評(píng)論

宜兰县| 乐至县| 浦县| 隆回县| 延吉市| 格尔木市| 稻城县| 通化县| 富裕县| 上高县| 枝江市| 北安市| 深州市| 游戏| 榆林市| 涪陵区| 外汇| 婺源县| 衡水市| 曲阜市| 如皋市| 安龙县| 双峰县| 大方县| 科尔| 乐业县| 陇西县| 称多县| 平阴县| 崇州市| 达州市| 罗甸县| 丁青县| 晴隆县| 吉安县| 兴宁市| 金湖县| 辛集市| 怀化市| 大石桥市| 汝阳县|