您好,登錄后才能下訂單哦!
ssl如何實現在spring boot中配置 ?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
ssl協議位于tcp/ip協議與各種應用協議之間,為數據通信提供安全支持。
ssl協議分為兩層:
基于B/S的web應用,是通過https來實現ssl的。https是http的安全版,即在http下加入ssl層,https的安全基礎是ssl;
我們開始在spring boot中使用ssl設置;
1.生成證書
每一個jdk或者jre中都有一個工具叫keytool,它是一個證書管理工具,可以用來生成自簽名的證書;打開cmd,進入jdk/bin路徑,敲入命令
keytool -genkey -alias tomcat
在用戶路徑下生成 .keystore文件 ,這就是我們要使用的證書文件。
2.spring boot配置ssl
將.keystore文件復制到項目根目錄,然后配置application.properties中做ssl配置
server.ssl.key-store=.keystore server.ssl.key-store-password=密碼 server.ssl.keyStoreType = JKS server.ssl.keyAlias=tomcat
啟動項目
訪問地址 https://localhost:8080
3、http轉https
要實現這個功能,我們需要配置TomcatEmbeddedServletContainerFactory,并且添加tomcat的connector來實現。
package com.example; 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.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer; import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer; import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory; import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory; import org.springframework.boot.web.servlet.ErrorPage; import org.springframework.context.annotation.Bean; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Component; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; /** * Created by xingzhuipingye on 2017/5/7. */ @Controller @SpringBootApplication public class ApplicationMy { @RequestMapping("/") public String index(Model model){ Person single = new Person("aa",11); List<Person> list = new ArrayList<>(); Person p1 = new Person("xx",11); Person p2 = new Person("yy",22); Person p3 = new Person("zz",33); list.add(p1); list.add(p2); list.add(p3); model.addAttribute("singlePerson",single); model.addAttribute("people",list); return "index"; } public static void main(String[] args){ SpringApplication.run(ApplicationMy.class); } @Bean public EmbeddedServletContainerFactory servletContainer(){ TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory(){ @Override protected void postProcessContext(Context context) { SecurityConstraint securityConstraint = new SecurityConstraint(); securityConstraint.setUserConstraint("CONFIDENTIAL"); SecurityCollection collection = new SecurityCollection(); collection.addPattern("/*"); securityConstraint.addCollection(collection); context.addConstraint(securityConstraint); } }; tomcat.addAdditionalTomcatConnectors(httpConnector()); return tomcat; } @Bean public Connector httpConnector(){ Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); connector.setPort(8080); connector.setSecure(false); connector.setRedirectPort(8088); return connector; } }
注:我在application.properties 中修改了端口為8088
此時我們訪問http://localhost:8080 就會跳轉到 https://localhost:8088
關于ssl如何實現在spring boot中配置 問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。