一。首先我们要先有一个简单的spring-boot项目:原先已经写过一篇创建spring-boot的文章了
二、获得ssl证书:方法不唯一,又从网上的大平台下载也能自己生成。自己生成的也写过了
三、在spring-boot项目中配置。配置分四步。
1.将得到的ssl证书放在项目的根目录下。如图:
2.在application.properties文件中配置
server.port=8443
server.ssl.key-store=tomcat.keystore
server.ssl.key-store-password=tomcat
server.ssl.keyStoreType=JKS
server.ssl.keyAlias=tomcat
说明下:
8443:指的是你https的请求端口(不固定,可以改)
tomcat.keystore :值得是你证书的路径,因为在根目录下所以就只有文件名
password:这是你密钥的密码
storeType:这是你ssl证书的标准(还有一种PKCS12)
keyAlias:是你密钥库的密码
注:password最好和keyAlias保持一致,不然出错我也没办法,谁有解决方法麻烦告知我下。
配置好后,启动你的spring-boot就可以看效果了。
看到这不要慌,点击高级。
就成功访问到了。
其实这就已经好了,只是chrome还是提示证书不安全,是因为我用的证书是我自己生成的它是不认的。Chrome只认大平台颁发的。
上面就是使用ssl证书,接下来说说,如何让用户请求http:8080端口然后自动跳转到https的8443端口。
想要让8080端口的请求自动跳转到https:8443端口的话我们要怎么搞?
思路是这样的:
首先我们得知道8080端口被请求了,所以我们得监听8080端口得到用户的请求。那我们拿到了用户的请求又怎么才能跳转到我们指定的端口呢?
有些同学应该已经有思路了~~重定向。
但是在springboot就很简单了。
在你的启动类中加入如下代码就ok了:
/**
* http重定向到https
* @return
*/
@Bean
public ServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(Context context) {
SecurityConstraint constraint = new SecurityConstraint();
constraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
constraint.addCollection(collection);
context.addConstraint(constraint);
}
};
tomcat.addAdditionalTomcatConnectors(httpConnector());
return tomcat;
}
@Bean
public Connector httpConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
//Connector监听的http的端口号
connector.setPort(8080);
connector.setSecure(false);
//监听到http的端口号后转向到的https的端口号
connector.setRedirectPort(8443);
return connector;
}
把段代码加上就可以直接启动了。是不是简单粗暴?对这两段代码不清楚?嘿嘿我也不清楚,等我研究下就发文章并把链接更新到这个文章上。不过现在就已经实现了跳转,当然如果你又强迫症可以用大平台的证书就不会被chrome认为不安全了