欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot如何配置ssl支持https

 更新時間:2024年10月16日 17:04:55   作者:GKFreewind  
在SpringBoot應(yīng)用中配置SSL支持HTTPS需要創(chuàng)建KeyStore并在application.yml中進行相應(yīng)配置,首先,使用java的keytool工具創(chuàng)建KeyStore,這涉及到設(shè)置密鑰對、指定密鑰算法(RSA)、密鑰大小(2048位)、密鑰庫名稱、證書有效期等,創(chuàng)建KeyStore后

springboot 配置ssl支持https

以下信息請根據(jù)實際情況修改?。?!

創(chuàng)建keystore

KeyStore是一個用于存儲和管理加密密鑰和證書的存儲庫。

它通常被用于各種應(yīng)用和系統(tǒng)中,以保護敏感數(shù)據(jù)和確保安全通信。

KeyStore可以被看作是一種加密的“保險箱”,用于存放密鑰、密鑰對和證書等安全相關(guān)的數(shù)據(jù)。

通過java的keytool創(chuàng)建keyStore

keytool -genkeypair -alias mykey -keyalg RSA -keysize 2048 -keystore keystore.jks -validity 365 -storepass mypassword -keypass mypassword -dname "CN=localhost, OU=MyOrg, O=MyOrg, L=MyCity, ST=MyState, C=MyCountry"

解釋各個參數(shù):

  • -genkeypair:生成密鑰對(公鑰和私鑰)。
  • -alias mykey:指定密鑰的別名(在密鑰庫中引用密鑰時使用)。
  • -keyalg RSA:指定密鑰算法(這里是 RSA)。
  • -keysize 2048:指定密鑰大?。ㄎ唬?。
  • -keystore keystore.jks:指定密鑰庫文件的名稱(如果文件不存在,則創(chuàng)建它)。
  • -validity 365:指定證書的有效期(天)。
  • -storepass mypassword:指定密鑰庫的存儲密碼。
  • -keypass mypassword:指定密鑰的密碼(如果與密鑰庫密碼相同,可以省略)。
  • -dname:指定證書的主題信息(DN,Distinguished Name),包括通用名稱(CN)、組織單位(OU)、組織(O)、城市(L)、州/?。⊿T)和國家(C)。

在springboot的application.yml配置文件中配置相關(guān)內(nèi)容

server:  
  port: 8443 # HTTPS的默認(rèn)端口是443,但443端口通常需要管理員權(quán)限才能綁定  
  ssl:  
    key-store: classpath:keystore.jks # 密鑰庫的位置,相對于classpath  對應(yīng)keytool生成時的-keystore
    key-store-type: JKS # 密鑰庫類型,默認(rèn)為JKS  
    key-store-password: mypassword # 密鑰庫密碼  對應(yīng)keytool生成時的-storepass
    key-alias: mykey # 密鑰別名  對應(yīng)keytool生成時的-alias
    key-password: mypassword # 密鑰別名  對應(yīng)keytool生成時的-keypass
    # 如果你使用的是PKCS12密鑰庫,則需要如下配置,相應(yīng)信息根據(jù)實際情況修改
    # key-store-type: PKCS12  
    # key-store: classpath:keystore.p12  
    # key-store-password: yourpassword  
    # 如果需要,還可以配置信任庫  
    # trust-store: classpath:truststore.jks  
    # trust-store-password: trustpassword  
    # trust-store-type: JKS  
    # 啟用SSL客戶端認(rèn)證(可選)  
    # client-auth: need

springboot應(yīng)用支持https實現(xiàn)

jdk自帶證書生成

切換到j(luò)dk目錄下bin目錄,執(zhí)行

  • keytool -genkey -alias (別名)
  • -dname "CN=(姓名),OU=(組織單位名稱),O=(組織名稱),L=(城市名稱),ST=(省),C=(國家)"
  • -storetype (密鑰倉庫類型)
  • -keyalg (生證書的算法名稱) -keysize (密鑰長度,證書大小)
  • -keystore (指定生成證書的位置和證書名稱)
  • -validity (證書有效期,天單位)

列:

keytool -genkey -alias lyc -dname "CN=l,OU=SC,O=yd,L=lc,ST=sc,C=CN" -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 365

配置https協(xié)議

springboot+tomcat,增加代碼configuration配置項如下:

import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class TomcatHttpsConfig {

    @Bean
    public Connector connector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setSecure(false);
        connector.setPort(80);
        connector.setRedirectPort(443);
        return connector;
    }

    @Bean
    public TomcatServletWebServerFactory tomcatServletWebServerFactory(Connector connector) {
        TomcatServletWebServerFactory webServerFactory = new TomcatServletWebServerFactory() {
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint securityConstraint = new SecurityConstraint();
                securityConstraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection securityCollection = new SecurityCollection();
                securityCollection.addPattern("/*");
                securityConstraint.addCollection(securityCollection);
                context.addConstraint(securityConstraint);
            }
        };
        webServerFactory.addAdditionalTomcatConnectors(connector);
        return webServerFactory;
    }

}

springboot+undertow,增加代碼configuration配置項如下:

import io.undertow.Undertow;
import io.undertow.UndertowOptions;
import io.undertow.servlet.api.SecurityConstraint;
import io.undertow.servlet.api.SecurityInfo;
import io.undertow.servlet.api.TransportGuaranteeType;
import io.undertow.servlet.api.WebResourceCollection;
import org.springframework.boot.web.embedded.undertow.UndertowServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;

public class UndertowHttpsConfig {
    private int httpPort = 80;
    private int httpsPort = 443;

    @Bean
    public ServletWebServerFactory undertowFactory() {
        UndertowServletWebServerFactory undertowFactory = new UndertowServletWebServerFactory();
        undertowFactory.addBuilderCustomizers((Undertow.Builder builder) -> {
            builder.addHttpListener(httpPort, "0.0.0.0");
            // 開啟HTTP2
            builder.setServerOption(UndertowOptions.ENABLE_HTTP2, true);
        });
        undertowFactory.addDeploymentInfoCustomizers(deploymentInfo -> {
            // 開啟HTTP自動跳轉(zhuǎn)至HTTPS
            deploymentInfo.addSecurityConstraint(new SecurityConstraint()
                    .addWebResourceCollection(new WebResourceCollection().addUrlPattern("/*"))
                    .setTransportGuaranteeType(TransportGuaranteeType.CONFIDENTIAL)
                    .setEmptyRoleSemantic(SecurityInfo.EmptyRoleSemantic.PERMIT))
                    .setConfidentialPortManager(exchange -> httpsPort);
        });
        return undertowFactory;
    }
}

完成以上配置之后,啟動項目

訪問:https://localhost:443/test/test實現(xiàn)springboot的https協(xié)議訪問

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java如何發(fā)起http請求的實現(xiàn)(GET/POST)

    Java如何發(fā)起http請求的實現(xiàn)(GET/POST)

    這篇文章主要介紹了Java如何發(fā)起http請求的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • java微信公眾號支付示例詳解

    java微信公眾號支付示例詳解

    這篇文章主要為大家詳細(xì)介紹了java微信公眾號支付示例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • String?concat(String?str)使用小結(jié)

    String?concat(String?str)使用小結(jié)

    這篇文章主要介紹了String?concat(String?str)使用小結(jié),在了解concat()之前,首先需要明確的是String的兩點特殊性,一是長度不可變二是值不可變,本文給大家詳細(xì)講解,需要的朋友可以參考下
    2022-11-11
  • java中TESTful架構(gòu)原理分析

    java中TESTful架構(gòu)原理分析

    這篇文章主要介紹了對java架構(gòu)中TESTful架構(gòu)原理進行了詳細(xì)的原理分析,有需要的朋友可以借鑒參考下,希望可以有所幫助,祝大家多多進步,早日升職加薪
    2021-09-09
  • Java常用數(shù)字工具類 大數(shù)乘法、加法、減法運算(2)

    Java常用數(shù)字工具類 大數(shù)乘法、加法、減法運算(2)

    這篇文章主要為大家詳細(xì)介紹了Java常用數(shù)字工具類,大數(shù)乘法、加法、減法運算,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • SpringBoot3.0自定stater模塊的操作流程(chatGPT提供的49種場景)

    SpringBoot3.0自定stater模塊的操作流程(chatGPT提供的49種場景)

    SpringBoot3.0發(fā)布等重磅陸消息續(xù)進入大家的視線,而本文作者將以技術(shù)整合的角度,帶大家把最火的兩個技術(shù)整合在一起,通過本文學(xué)習(xí)你將熟悉SpringBoot3.0自定stater模塊的操作流程,并熟悉OpenAi為chatGPT提供的49種場景,感興趣的朋友一起看看吧
    2022-12-12
  • Java如何實現(xiàn)URL帶請求參數(shù)(get/post)及得到get和post請求url和參數(shù)列表的方法

    Java如何實現(xiàn)URL帶請求參數(shù)(get/post)及得到get和post請求url和參數(shù)列表的方法

    本文給大家介紹Java如何實現(xiàn)URL帶請求參數(shù)(get/post)及得到get和post請求url和參數(shù)列表的方法,涉及到 java獲取post請求參數(shù)的方法,感興趣的朋友一起看看吧
    2015-10-10
  • JVM指令的使用深入詳解

    JVM指令的使用深入詳解

    這篇文章主要給大家介紹了關(guān)于JVM指令使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • SpringBoot集成Seata的全過程

    SpringBoot集成Seata的全過程

    本文介紹了事務(wù)的四大特性(原子性、一致性、隔離性、持久性)以及本地事務(wù)和分布式事務(wù)的概念,本地事務(wù)是指在單個數(shù)據(jù)庫級別的事務(wù)管理,而分布式事務(wù)則是跨多個數(shù)據(jù)庫或服務(wù)的事務(wù)管理,感興趣的朋友一起看看吧
    2024-11-11
  • 詳解如何在SpringBoot中自定義參數(shù)解析器

    詳解如何在SpringBoot中自定義參數(shù)解析器

    這篇文章主要為大家詳細(xì)介紹了如何在SpringBoot中實現(xiàn)自定義參數(shù)解析器,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)或工作有一定幫助,需要的可以參考一下
    2022-05-05

最新評論