首先在阿里云购买一个免费的证书
买完之后我们在证书列表界面选择证书–>>申请
绑定好自己的域名就完成了.
申请成功之后,下载证书,因为使用的springboot所以选择下载tomcat的证书.
接下就建立一个springboot的项目吧.
将下载好的证书文件放到工程的根目录.就是这个pfx文件
弄好之后我们去修改springboot的配置文件,这里一定要注意,配置文件里面写的配置一定要跟证书里面的一样,否则会在启动时提示port端口号被占用,其实并没有被占用,被这个问题折腾了好久
配置如下:
#端口号
server.port=443
#证书文件的名称
server.ssl.key-store=2629870csdnonline.pfx
#证书的名称,一定要与证书信息匹配
server.ssl.key-alias=alias
#开启SSL
server.ssl.enabled=true
#密码
server.ssl.key-store-password=此处填写密码
#证书类型
server.ssl.key-store-type=pkcs12
别名一定要填写正确,笔者测试别名可以不用写,但是既然有这个配置我们还是写上吧,我们可以利用java自带的工具查看证书的一些信息,打开控制台输入一下信息
keytool -list -v -keystore 2629870csdnonline.pfx -storepass 证书密码
回车之后我们可以看到很多信息,以下指示部分我们需要在配置里面写的信息
密钥库类型: PKCS12
密钥库提供方: SUN
您的密钥库包含 1 个条目
别名: alias
创建日期: 2019年8月9日
条目类型: PrivateKeyEntry
证书链长度: 2
看到秘钥库类型和别名了吗?我们一次填写在配置文件的server.ssl.key-store-type和server.ssl.key-alias处即可
接下来是java代码,首先拦截所有请求
@Bean public Connector connector(){ Connector connector=new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); connector.setPort(80); connector.setSecure(false); connector.setRedirectPort(443); return connector; } @Bean public TomcatServletWebServerFactory tomcatServletWebServerFactory(Connector connector){ 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(connector); return tomcat; }
再也一个简单的测试接口
@RequestMapping("/test")
public String test(){
return "成功!";
}
最后打好jar包放到服务器上运行即可,注意一定要把证书文件放到jar包同目录下,否则会报端口被占用,其实并没有,嘿嘿
最后结果就是这个样子的,浏览器不会再提示不安全网站