略過springboot項目的建立步驟
C:\Users\Administrator>keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650
完成後在C:UsersAdministrator目錄下就會有一個keystore.p12文件java
server.port=443 # 證書路徑 server.ssl.key-store=classpath:keystore.p12 # 證書祕鑰 server.ssl.key-store-password=javajava # 證書類型 server.ssl.key-store-type=PKCS12 # 證書別名 server.ssl.key-alias=tomcat
keystore.p12是放在resources目錄下
當在application.properties中的證書路徑是這樣時git
server.ssl.key-store=keystore.p12
keystore.p12是放在項目根目錄下,注意多模塊項目,這是非多模塊項目的目錄結構,這時keystore.p12就是放在了項目根目錄
可是打成功jar包運行的時候報錯
將jar包解壓出來發現裏面根本沒有keystore.p12文件,說明沒有被打包進來,解決辦法是將keystore.p12文件放在resources目錄下,在application.properties中路徑前加上classpathspring
server.ssl.key-store=classpath:keystore.p12
或者也能夠將keystore.p12放在jar包的同級目錄下apache
可見springboot裏的classpath指的就是classes目錄,rosources目錄就是直接映射到classes目錄
編程
在啓動類添加以下代碼瀏覽器
@Bean public TomcatServletWebServerFactory servletContainer() { TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory () { @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(initiateHttpConnector()); return tomcat; } /** * 讓咱們的應用支持HTTP是個好想法,可是須要重定向到HTTPS, * 可是不能同時在application.properties中同時配置兩個connector, * 因此要以編程的方式配置HTTP connector,而後重定向到HTTPS connector * @return Connector */ private Connector initiateHttpConnector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); connector.setPort(80); // http端口 connector.setSecure(false); connector.setRedirectPort(443); // application.properties中配置的https端口 return connector; }
@RestController public class TestController { @GetMapping(value = "/") public String hello() { return "你好"; } }
在瀏覽器地址欄輸入localhost,回車便可看到tomcat
在地址欄輸入localhost至關於http://localhost:80,回車切換成https://localhost:443,由於80和443端口分別是http和https的默認端口,因此都隱藏了,如何同時支持http和https而端口不會變的,目前還在探索中。。springboot
碼雲代碼app