本地 springboot 项目如何使用 https 进行访问

news/2024/9/16 7:41:54 标签: spring boot, https, 后端
  1. 创建或获取 SSL 证书
    首先,你需要一个 SSL 证书。可以使用自签名证书进行本地开发。使用 Java 自带的 keytool 工具生成自签名证书。

生成自签名证书:

keytool -genkeypair -alias myapp -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore keystore.p12 -validity 3650

此命令将生成一个 keystore.p12 文件,该文件包含自签名证书,证书有效期为10年。你将被提示输入一些信息(如密码、名称等)。
如何判断升成的是否有效:

keytool -list -keystore keystore.p12 -storetype PKCS12
keytool -genkeypair -alias myapp -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore keystore.p12 -validity 3650

输入密钥库口令:  
再次输入新口令: 
您的名字与姓氏是什么?
  [Unknown]:  cloud
您的组织单位名称是什么?
  [Unknown]:  juhe
您的组织名称是什么?
  [Unknown]:  juhecn
您所在的城市或区域名称是什么?
  [Unknown]:  suzhou
您所在的省/市/自治区名称是什么?
  [Unknown]:  js
该单位的双字母国家/地区代码是什么?
  [Unknown]:  CN
CN=cloud, OU=juhe, O=juhecn, L=suzhou, ST=js, C=CN是否正确?
  []:  是 

正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 3,650):
	 CN=cloud, OU=juhe, O=juhecn, L=suzhou, ST=js, C=CN


keytool -list -keystore keystore.p12 -storetype PKCS12

输入密钥库口令:  
密钥库类型: PKCS12
密钥库提供方: SUN

您的密钥库包含 1 个条目

myapp, 2024年9月5日, PrivateKeyEntry, 
证书指纹 (SHA-256): 74:5D:37:8F:6B:D3:9C:04:F9:4D:97:C2:4D:1B:54:62:2B:10:2C:AE:CB:5E:A2:68:49:E6:34:88:BF:76:B5:89

  1. 配置 Spring Boot 应用程序
    接下来,你需要在 application.yml 或 application.properties 文件中配置 HTTPS。

如果使用 application.yml:

server:
  port: 8080
  ssl:
    key-store: /Users/java0904/bayarea/src/main/resources/keystore.p12
    key-store-password: wei123
    key-store-type: PKCS12
    key-alias: myapp
    enabled: true

注意:这里的 key-store 写成绝对路径,不然启动报错

2024-09-05 14:06:27.917  WARN 71156 --- [           main] o.a.c.loader.WebappClassLoaderBase       : The web application [api] appears to have started a thread named [ForkJoinPool.commonPool-worker-2] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.ForkJoinPool.awaitWork(ForkJoinPool.java:1835)
 java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1704)
 java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:172)
2024-09-05 14:06:27.917  WARN 71156 --- [           main] o.a.c.loader.WebappClassLoaderBase       : The web application [api] appears to have started a thread named [ForkJoinPool.commonPool-worker-3] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.ForkJoinPool.awaitWork(ForkJoinPool.java:1835)
 java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1704)
 java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:172)
2024-09-05 14:06:27.918  WARN 71156 --- [           main] o.a.c.loader.WebappClassLoaderBase       : The web application [api] appears to have started a thread named [ForkJoinPool.commonPool-worker-4] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.ForkJoinPool.awaitWork(ForkJoinPool.java:1835)
 java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1704)
 java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:172)
2024-09-05 14:06:27.918  WARN 71156 --- [           main] o.a.c.loader.WebappClassLoaderBase       : The web application [api] appears to have started a thread named [ForkJoinPool.commonPool-worker-5] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.ForkJoinPool.awaitWork(ForkJoinPool.java:1835)
 java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1704)
 java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:172)
2024-09-05 14:06:27.919  WARN 71156 --- [           main] o.a.c.loader.WebappClassLoaderBase       : The web application [api] appears to have started a thread named [ForkJoinPool.commonPool-worker-6] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.ForkJoinPool.awaitWork(ForkJoinPool.java:1835)
 java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1704)
 java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:172)
2024-09-05 14:06:27.919  WARN 71156 --- [           main] o.a.c.loader.WebappClassLoaderBase       : The web application [api] appears to have started a thread named [ForkJoinPool.commonPool-worker-7] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.ForkJoinPool.awaitWork(ForkJoinPool.java:1835)
 java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1704)
 java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:172)
2024-09-05 14:06:27.927  INFO 71156 --- [           main] ConditionEvaluationReportLoggingListener : 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2024-09-05 14:06:27.941 ERROR 71156 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.context.ApplicationContextException: Failed to start bean 'webServerStartStop'; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat server
	at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:181)
	at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:54)
	at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:356)
	at java.lang.Iterable.forEach(Iterable.java:75)
	at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:155)
	at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:123)
	at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:935)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:740)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:415)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:303)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1312)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1301)
	at com.juhe.bayarea.BayAreaApplication.main(BayAreaApplication.java:16)
Caused by: org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat server
	at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:229)
	at org.springframework.boot.web.servlet.context.WebServerStartStopLifecycle.start(WebServerStartStopLifecycle.java:43)
	at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:178)
	... 14 common frames omitted
Caused by: java.lang.IllegalArgumentException: standardService.connector.startFailed
	at org.apache.catalina.core.StandardService.addConnector(StandardService.java:238)
	at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.addPreviouslyRemovedConnectors(TomcatWebServer.java:282)
	at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:213)
	... 16 common frames omitted
Caused by: org.apache.catalina.LifecycleException: Protocol handler start failed
	at org.apache.catalina.connector.Connector.startInternal(Connector.java:1075)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
	at org.apache.catalina.core.StandardService.addConnector(StandardService.java:234)
	... 18 common frames omitted
Caused by: java.lang.IllegalArgumentException: DerInputStream.getLength(): lengthTag=111, too big.
	at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:99)
	at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:71)
	at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:234)
	at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1227)
	at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:1313)
	at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:614)
	at org.apache.catalina.connector.Connector.startInternal(Connector.java:1072)
	... 20 common frames omitted
Caused by: java.io.IOException: DerInputStream.getLength(): lengthTag=111, too big.
	at sun.security.util.DerInputStream.getLength(DerInputStream.java:616)
	at sun.security.util.DerValue.init(DerValue.java:391)
	at sun.security.util.DerValue.<init>(DerValue.java:332)
	at sun.security.util.DerValue.<init>(DerValue.java:345)
	at sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1895)
	at java.security.KeyStore.load(KeyStore.java:1449)
	at org.apache.tomcat.util.security.KeyStoreUtil.load(KeyStoreUtil.java:67)
	at org.apache.tomcat.util.net.SSLUtilBase.getStore(SSLUtilBase.java:215)
	at org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateKeystore(SSLHostConfigCertificate.java:207)
	at org.apache.tomcat.util.net.SSLUtilBase.getKeyManagers(SSLUtilBase.java:281)
	at org.apache.tomcat.util.net.SSLUtilBase.createSSLContext(SSLUtilBase.java:245)
	at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:97)
	... 26 common frames omitted
	```





http://www.niftyadmin.cn/n/5646174.html

相关文章

Excel文档的读取(1)

熟悉使用Excel的同学应该都知道&#xff0c;在单个Excel表格里想要分商品计算总销售额&#xff0c;使用数据透视表也可以非常快速方便的获得结果。但当有非常大量的Excel文件需要处理时&#xff0c;每一个Excel文件单独去做数据透视也会消耗大量的时间。就算使用Power Query这样…

VSCode中多行文本的快速前后缩进

VSCode快捷键&#xff0c;用于快速调整选中文本行的缩进。 增加缩进&#xff08;向前缩进&#xff09;&#xff1a;在Windows和Linux上按 Tab 键&#xff0c; 在Mac上按 ⇧⇥&#xff08;Shift Tab&#xff09;。 减少缩进&#xff08;向后缩进&#xff09;&#xff1a;在Wi…

HCIA--实验五:静态路由综合实验

静态路由综合实验 一、实验内容&#xff1a; 1.需求/目的&#xff1a; 在ensp模拟器中使用四个路由器&#xff0c;并且在路由器上创建loopback接口&#xff0c;相当于连接了一台主机&#xff0c;通过配置静态路由的方式实现全网通。 二、实验过程 1.道具&#xff1a; 4个…

[测试]1.TPC-DS性能测试

通过EMR运行基于OSS-HDFS服务的TPC-DS Benchmark了解数据查询和分析的性能表现_对象存储(OSS)-阿里云帮助中心 (aliyun.com) 鲲鹏大数据测试指导: 安装Git-部署环境配置-ElasticSearch组件测试工具Esrally 使用指导-测试指导-测试指导-鲲鹏BoostKit大数据使能套件开发文档-鲲…

Apache Guacamole 安装及配置VNC远程桌面控制

文章目录 官网简介支持多种协议无插件浏览器访问配置和管理应用场景 Podman 部署 Apache Guacamole拉取 docker 镜像docker-compose.yml部署 PostgreSQL生成 initdb.sql 脚本部署 guacamole Guacamole 基本用法配置 VNC 连接 Mac 电脑开启自带的 VNC 服务 官网 https://guacam…

网络协议-SSH

SSH&#xff08;Secure Shell&#xff09;协议是一种广泛使用的网络协议&#xff0c;用于安全地进行远程登录和数据传输。SSH协议通过加密技术保证了数据的安全性&#xff0c;防止数据在传输过程中被窃听、篡改或伪造。SSH协议的通信认证过程主要包括以下几个步骤&#xff1a; …

使用 MongoDB 构建 AI:Patronus 如何自动进行大语言模型评估来增强对生成式 AI 的信心

大语言模型可能不可靠&#xff0c;这几乎算不上头条新闻。对于某些用例&#xff0c;这可能会带来不便。而对于其他行业&#xff0c;尤其是受监管行业&#xff0c;后果则要严重得多。于是&#xff0c;业内首个大语言模型自动评估平台 Patronus AI 应运而生。 Patronus AI 由 Met…

Spring MVC: 构建Web应用的强大框架

Spring MVC: 构建现代Web应用的强大框架 1. MVC设计模式简介 MVC (Model-View-Controller) 是一种广泛使用的软件设计模式,它将应用程序的逻辑分为三个相互关联的组件: Model (模型): 负责管理数据、业务逻辑和规则。View (视图): 负责用户界面的展示,将数据呈现给用户。Con…