Nginx/Tomcat/SpringBoot配置自生成SSL证书

1.配置自生成证书(方式一,无需密码)

1.1.生成证书

1.下载 nginx windows 版本并解压,这里不过多描述

2.下载 OpenSSL windows 版本并安装,用于生成证书

3.添加 C:\OpenSSL-Win64,C:\nginx-1.16.1 到环境变量 PATH 路径;

4.在C:\nginx-1.16.1目录下创建ssl目录,以后自签名证书存到这个目录

5.开始创建证书,启动cmd命令行程序,切到C:\nginx-1.16.1\ssl 目录。

基本思路:先创建服务器私钥,再创建CSR文件,最后用私钥签发CSR文件得到服务器公钥证书。

  1. 创建服务器私钥
    C:\nginx-1.16.1\ssl>openssl genrsa -des3 -out server.key 2048

Enter pass phrase for server.key:123456
Verifying - Enter pass phrase for server.key:123456

  1. 创建CSR证书请求文件
C:\nginx-1.16.1\ssl>openssl req -new -key server.key -out server.csrCountry Name (2 letter code) [AU]:cn
State or Province Name (full name) [Some-State]:sd
Locality Name (eg, city) []:jn
Organization Name (eg, company) [Internet Widgits Pty Ltd]:sdcd
Organizational Unit Name (eg, section) []:sdcd
Common Name (e.g. server FQDN or YOUR name) []:localhost
A challenge password []:sdcd2023
An optional company name []:sdcd
  1. 备份有秘密的私钥文件
C:\nginx-1.16.1\ssl>copy server.key server.key.orig
  1. 去掉私钥文件的密码
C:\nginx-1.16.1\ssl>openssl rsa -in server.key -out server.key
Enter pass phrase for server.key:
  1. 使用服务器私钥签署服务器公钥证书
C:\nginx-1.16.1\ssl>openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

1.2.部署自签证书到nginx服务器

  1. 用记事本编辑 C:\nginx-1.16.1\conf\nginx.conf文件,向文件末尾追加 https 服务器配置:
    # 二级路由跳转、接口代理、https信任自签证书server {server_name  192.168.43.20;listen 443 ssl;        # 监听443端口,也可用其他端口, 开启ssl(必须)# 引用ssl证书(必须,如果放在nginx/conf/ssl下可以用相对路径,其他位置必须用绝对路径)ssl_certificate   ../ssl/server.crt;ssl_certificate_key ../ssl/server.key;# 协议优化(可选,优化https协议,增强安全性)ssl_protocols    TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;ssl_prefer_server_ciphers on;ssl_session_cache  shared:SSL:10m;ssl_session_timeout 10m;# 二级路由跳转location /ayyingyong20221119 {try_files $uri $uri/ /ayyingyong20221119/index.html;index index.html;}# 当遇到/api (也就是我们的接口)对其进行反向代理location /ayyingyong20221119/api {proxy_pass https://localhost:9090/ayyingyong20221119/api;}}
  1. 重启 nginx
nginx -s reload
  1. 登录浏览器访问测试
    https://ip:端口/***;使用443不需要端口,其他需要端口

1.3.部署自签证书到tomcat服务器

1.找到server.xml文件,修改Connector 为下面

<Connector port="8080" protocol="HTTP/1.1" scheme="https" secure="true" clientAuth="false" 				sslProtocol="TLS"SSLEnabled="true" SSLCertificateFile="C:\apache-tomcat-7.0.68-ui\conf\server.crt"SSLCertificateKeyFile="C:\apache-tomcat-7.0.68-ui\conf\server.key"connectionTimeout="20000" 
URIEncoding="UTF-8"/>

2.配置自生成证书(方式二,需要密码)

2.1.生成证书

keytool -genkeypair -alias 'tomcat' -keyalg 'RSA' -keystore 'D:/tomcat/conf/tomcat.keystore'

2.2.部署到Tomcat

  1. 修改tomcat主配置文件server.xml
去掉注释,并将keystoreFile和keystorePass处替换成自己的证书路径和生成证书时的口令即可.
<Connector port="8443" protocol="HTTP/1.1" maxThreads="150" SSLEnabled="true" scheme="https" secure="true"clientAuth="false" sslProtocol="TLS" keystoreFile="本机的keystore路径" keystorePass="生成证书时的口令"  />
  1. 注释掉server.xml中这段代码,不存在这段代码则不用管
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

用这种方法,不注释上面这行代码启动tomcat会报错

严重: Failed to initialize end point associated with ProtocolHandler ["http-apr-
8888"]
java.lang.Exception: Connector attribute SSLCertificateFile must be defined whenusing SSL with APRat org.apache.tomcat.util.net.AprEndpoint.bind(AprEndpoint.java:507)at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.jav
a:650)at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:434)at org.apache.catalina.connector.Connector.initInternal(Connector.java:9
78)at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)at org.apache.catalina.core.StandardService.initInternal(StandardService
.java:560)at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)at org.apache.catalina.core.StandardServer.initInternal(StandardServer.j
ava:820)at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)at org.apache.catalina.startup.Catalina.load(Catalina.java:642)at org.apache.catalina.startup.Catalina.load(Catalina.java:667)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)at java.lang.reflect.Method.invoke(Unknown Source)at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:253)at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:427)

2.3. 部署SpringBoot项目

server:port: 8008ssl:enabled: truekey-store-type: JKSkey-store: classpath:server.keystorekey-store-password: 123456key-alias: server

参考文档

springboot+vue+nginx 配置Https访问——自签名证书验证 - 尹镇镇 - 博客园 (cnblogs.com)

springboot+vue+nginx 配置Https访问——自签名证书验证 | 航行学园 (voycn.com)

SpringBoot+Vue2前后端项目配置ssl证书_springboot配置ssl证书-CSDN博客

Web服务器群集:Tomcat配置https证书-CSDN博客

完美配置Tomcat的HTTPS-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/552067.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 找质数的个数_用Python打造一款文件搜索工具,所有功能自己定义!

一、前言大家好&#xff0c;又到了Python办公自动化系列。在日常的办公中&#xff0c;我们经常会从一堆不同格式的文件(夹)中搜索特定的文件&#xff0c;可能你是凭着记忆去找或是借助软件&#xff0c;但你有想过如何用Python实现吗&#xff1f;本文将基于几个常见的搜索操作讲…

nessus安装_Nessus忘记密码怎么办?

最近公司购买了Nessus&#xff0c;才安装好&#xff0c;然后隔天密码就忘了&#xff0c;唉&#xff0c;人老了呀&#xff0c;记性不行了。网上看了一下&#xff0c;还是有比较多的同学也遇到这个问题&#xff0c;现将密码重置方法&#xff0c;分享给大家。系统环境:操作系统&am…

python爬取百度域名注册_python爬取百度域名_python爬取百度搜索結果url匯總

寫了兩篇之后&#xff0c;我覺得關於爬蟲&#xff0c;重點還是分析過程分析些什么呢&#xff1a;1)首先明確自己要爬取的目標比如這次我們需要爬取的是使用百度搜索之后所有出來的url結果2)分析手動進行的獲取目標的過程&#xff0c;以便以程序實現比如百度&#xff0c;我們先進…

python自动生成表格_Python自动整理 Excel 表格

相信有不少朋友日常工作会用到 Excel 处理各式表格文件&#xff0c;更有甚者可能要花大把时间来做繁琐耗时的表格整理工作。最近有朋友问可否编程来减轻表格整理工作量&#xff0c;今儿我们就通过实例来实现 Python 对表格的自动化整理。 首先我们有这么一份数据表 source.csv&…

flag的具体用法python_Python Qt.WindowFlags方法代码示例

# 需要导入模块: from PyQt5.QtCore import Qt [as 别名]# 或者: from PyQt5.QtCore.Qt import WindowFlags [as 别名]def updatePreview(self):flags Qt.WindowFlags()if self.windowRadioButton.isChecked():flags Qt.Windowelif self.dialogRadioButton.isChecked():flags…

graphpad prism画折线图_如何用Graphpad Prism 8作折线图

如何用Graphpad Prism 8作折线图如何用Graphpad Prism 8作折线图Prism 8 有8种数据类型&#xff0c;Prism数据表的格式决定可制作的图表种类和可执行的分析类型。选择一个数据表格式可以使Prism创建合适数据的数据表&#xff0c;然后创建所需的图形&#xff0c;执行适当的分析。…

sqlserver可视化工具_数据分析之基础分析工具篇(修订版)

原创&#xff1a;海峰996已经火了&#xff0c;你正在经历996吗&#xff0c;怎样才能避免&#xff0c;而又能在职场立足&#xff0c;工作效率是关键&#xff0c;那么先从选对工具开始吧。进入数据时代&#xff0c;大家都会进行或多或少的数据分析&#xff0c;那么现在的你正在使…

python中日期和时间格式化输出的方法小结_python中日期和时间格式化输出的方法小结...

本文实例总结了python中日期和时间格式化输出的方法。分享给大家供大家参考。具体分析如下&#xff1a;python格式化日期时间的函数为datetime.datetime.strftime()&#xff1b;由字符串转为日期型的函数为&#xff1a;datetime.datetime.strptime()&#xff0c;两个函数都涉及…

java断点续传 http_http断点续传简单实现(java)

[月影读书频道 http://wf66.com/]fileSplitterFetch.splitterStop();}}//负责部分文件的抓取**FileSplitterFetch.java*/package NetFox;import java.io.*;import java.net.*;public class FileSplitterFetch extends Thread {String sURL; //File URLlong nStartPos; //File S…

windows下python环境搭建_Linux/Windows下Python环境搭建步骤

Python环境搭建首先到官网&#xff08;www.python.org&#xff09;下载相应的安装版本。主要分为Windows和Linux两种&#xff1a; 一、Linux下Python环境搭建 一般情况下&#xff0c;Linux系统都已经预安装好Python&#xff0c;但是版本都比较低&#xff0c;需要安装新的版本方…

oracle 同一列数据不同条件分组求和_艾瑞教育:有关Oracle数据库,你需要知道的几件事...

Oracle一、Oracle数据库在存储过程中&#xff0c;如何在字符串中使用变量?例&#xff1a;select to_char(sysdate,yyyymmdd) into v_yyyymmdd from dual;execute immediate(create table tableName_bk_ || v_yyyymmdd || as select * from TableName);将B表中符合关联条件的A…

java 对象流传输socket_Java Socket(二)使用TCP传输对象

在Java Socket使用TCP的基础上&#xff0c;通过ObjectInputStream和ObjectOutputStream来读写对象。//传输的对象&#xff0c;需要序列化package socket;import java.io.Serializable;public class MsgTO implements Serializable{private static final long serialVersionUID …

python量化策略源码_[Python源码] 十大经典日内策略之空中花园(附源码分享)

function kzhy(freq)% targetList traderGetTargetList(); %获取目标资产信息 HandleList traderGetHandleList(); %获取账户句柄 global upline; global dnline; if isempty(upline)||isempty(dnline) uplinezeros(length(targetList),1);%记录今天通道的上轨 dnlinezeros(l…

网络多人游戏架构与编程 电子书_Java互联网架构-高性能网络编程必备技能IO与NIO阻塞分析...

欢迎关注头条号&#xff1a;java小马哥周一至周日早九点半&#xff01;下午三点半&#xff01;精品技术文章准时送上&#xff01;&#xff01;&#xff01;精品学习资料获取通道&#xff0c;参见文末一、概念NIO即New IO&#xff0c;这个库是在JDK1.4中才引入的。NIO和IO有相同…

java 接口文件夹_Java NIO.2 使用Path接口来监听文件、文件夹变化

Java7对NIO进行了大的改进&#xff0c;新增了许多功能&#xff1a;•对文件系统的访问提供了全面的支持•提供了基于异步Channel的IO这些新增的IO功能简称为 NIO.2&#xff0c;依然在java.nio包下。早期的Java只提供了File类来操作文件、文件夹本身&#xff0c;功能有限&#x…

python能制作游戏吗_没有Python不能做的游戏,这些游戏都可以做

简介:Python编程语言的强大&#xff0c;几乎是众所周知的&#xff01;那么&#xff0c;下面我给大家介绍一下几个用Python实现的各种游戏吧。不仅能用来做web、爬虫、数据分析等&#xff0c;没想到还能用做这么多的游戏&#xff0c;实在令人惊讶不已。注意&#xff1a;以下介绍…

vba excel 退出编辑状态_偷梁换柱之EXCEL编辑保护和VBA隐藏代码保护的解锁

如何解锁EXCEL表格编辑保护和VBA隐藏代码保护&#xff1f;当我们想借用别人的表格发现表格上锁无法编辑又不知道密码时或者当我们用软件生成一些表格时往往会遇到“上锁”问题&#xff0c;导致我们无法对表格进行改动。类似下图这样&#xff1a;那怎么才能征服她呢&#xff1f;…

java使用的页面静态化技术_java秒杀系列(2)- 页面静态化技术

###前言通过代码片段分别介绍服务端渲染、客户端渲染、对象缓存三种方式的写法。代码片段仅供参考&#xff0c;具体实现需要根据业务场景自行适配&#xff0c;但思想都是一样。一、服务端渲染方式####1、接口返回html页面的设置javaAutowiredThymeleafViewResolver thymeleafVi…

activex for chrome扩展程序 下载”_Chrome扩展程序一键生成网页骨架屏

对于依赖接口渲染的页面&#xff0c;在拿到数据之前页面往往是空白的&#xff0c;为了提示用户当前正在加载中&#xff0c;往往会使用进度条、loading图标或骨架屏的方式。对于前两种方案而言&#xff0c;实现比较简单&#xff1b;本文主要研究骨架屏的应用及实现&#xff0c;并…

python定时器 循环_python从写定时器学习Thread

python从写定时器学习Threadpython 如何写一个定时器&#xff0c;循环定时做某一操作呢&#xff1f;Timer 对象from threading import Timerdef hello():print "hello, world"t Timer(10.0, hello)t.start()10秒后输出&#xff1a;hello, world重点研究 t Timer(10…