运维给了两个证书文件,一个是.key 和.crt
需要在我的项目中配置ssl,
我所使用的是p12的类型,参考的网址:
首先我们需要生成.p12的文件,文件需要一个插件OpenSSL
OpenSSL官网,
官方下载地址: https://www.openssl.org/source/
OpenSSL官网没有提供windows版本的安装包,可以选择其他开源平台提供的工具。例如 Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions
参考网址: Windows安装使用Openssl_microcosm1994的博客-CSDN博客_openssl安装
安装完成后,进入openSSL 的bin目录下 cmd,输入
openssl pkcs12 -export -clcerts -in yourDomain.crt -inkey myPrivateKey.key -out server.p12
-
yourDomain.crt 替换为你的 crt 文件
-
myPrivateKey.key 替换为你的 key 文件
-
在此过程中需要让你输入密码,记住这个密码,后面会用到
-
执行此命令,生成了我们需要的 p12 文件,将其复制到 spring boot 项目中的 src/main/resources/ 目录下,和 application.properties 平级
springboot项目配置
1 server 2 ssl: 3 key-store: server.p12 4 key-store-password: jsc111 5 key-store-type: PKCS12 6 enabled: true
然后再启动类中配置如下代码,
1 @Bean 2 public ServletWebServerFactory servletContainer() { 3 TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory(){ 4 protected void postProcessContext(Context context) { 5 SecurityConstraint securityConstraint = new SecurityConstraint(); 6 securityConstraint.setUserConstraint("CONFIDENTIAL"); 7 SecurityCollection collection = new SecurityCollection(); 8 collection.addPattern("/*"); 9 securityConstraint.addCollection(collection); 10 context.addConstraint(securityConstraint); 11 } 12 }; 13 tomcat.addAdditionalTomcatConnectors(httpConnector()); 14 return tomcat; 15 } 16 17 @Bean 18 public Connector httpConnector() { 19 Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); 20 connector.setScheme("http"); 21 connector.setPort(80); //Connector监听的http的端口号 22 connector.setSecure(false); 23 connector.setRedirectPort(8808); //监听到http的端口号后转向到的https的端口号 24 return connector; 25 }
然后访问你的项目地址成功访问即可完成
我在启动的时候遇到了一个报错
keytool error: java.io.IOException: parseAlgParameters failed: ObjectIdentifier() -- data isn't an object ID (tag = 48)
此报错代表你的jdk版本过低,需要升级到 8u301 或者 11.0.1版本
我所记录的仅为我找的的方法,只是在本地使用,服务器需要再进行配置,仅供参考