springboot2.0 配置ssl证书详解


运维给了两个证书文件,一个是.key.crt 

需要在我的项目中配置ssl,

我所使用的是p12的类型,参考的网址:在Spring Boot中配置ssl证书实现https - 简书 (jianshu.com)

首先我们需要生成.p12的文件,文件需要一个插件OpenSSL

 OpenSSL官网,

官方下载地址: https://www.openssl.org/source/

OpenSSL官网没有提供windows版本的安装包,可以选择其他开源平台提供的工具。例如 http://slproweb.com/products/Win32OpenSSL.html

参考网址: 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)

此报错代表你的java版本过低,需要升级到 8u301 或者 11.0.1版本

我所记录的仅为我找的的方法,只是在本地使用,服务器需要再进行配置,仅供参考


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM