https解决方案-利用keytool生成证书

news2024/11/18 1:39:44

https解决方案

1:什么是HTTPS?

HTTPS其实是有两部分组成:HTTP + SSL / TLS,

也就是在HTTP上又加了一层处理加密信息的模块,并且会进行身份的验证。

2:什么是自签名证书?

就是自己生成的证书,并不是官方生成的证书。

除非是很正式的项目,否则使用自己签发的证书即可,因为官方生成证书是要花钱滴。

3:使用JDK自带工具KeyTool 生成自签发证书!

第一步:为服务器生成证书

打开CMD命令行工具,cd到jdk的bin目录下,如下图所示

在这里插入图片描述

使用keytool命令生成证书:

keytool 
-genkey 
-alias tomcat(别名) 
-keypass 123456(别名密码) 
-keyalg RSA(算法) 
-keysize 1024(密钥长度) 
-validity 365(有效期,天单位) 
-keystore D:/keys/tomcat.keystore(指定生成证书的位置和证书名称) 
-storepass 123456(获取keystore信息的密码)

命令:

keytool -genkey -alias tomcat -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -keystore D:/keys/tomcat.keystore -storepass 123456

图例如下:

在这里插入图片描述

回车执行后如下图:

在这里插入图片描述

点击回车即可在D:/keys/文件夹内生成名为:tomcat.keystore的文件。

成功后无提示信息

注意:

①D:/keys/ 目录需要提前手动创建好,否则会生成失败

②提示输入域名的时候不能输入IP地址

第二步:为客户端生成证书

为浏览器生成证书,以便让服务器来验证它。

为了能将证书顺利导入至IE和Firefox,证书格式应该是PKCS12,

因此,使用如下命令生成:

keytool 
-genkey 
-alias client 
-keypass 123456
-keyalg RSA 
-storetype PKCS12 
-keypass 123456 
-storepass 123456 
-keystore D:/keys/client.p12

命令:

keytool -genkey -alias client -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -storetype PKCS12 -keystore D:/keys/client.p12 -storepass 123456

图例如下:
在这里插入图片描述

第三步:让服务器信任客户端证书

1、

由于不能直接将PKCS12格式的证书库导入,

必须先把客户端证书导出为一个单独的CER文件,使用如下命令:

keytool -export -alias client -keystore D:/keys/client.p12 -storetype PKCS12 -keypass 123456 -file D:/keys/client.cer

注意:

Keypass:指定CER文件的密码,但会被忽略,而要求重新输入

2、

将该文件导入到服务器的证书库,添加为一个信任证书:

keytool -import -v -file D:/keys/client.cer -keystore D:/keys/tomcat.keystore -storepass 123456

图例:

在这里插入图片描述

完成之后通过list命令查看服务器的证书库,

可以看到两个证书,一个是服务器证书,一个是受信任的客户端证书:

keytool -list -v -keystore D:/keys/tomcat.keystore

第四步:让客户端信任服务器证书

1、

由于是双向SSL认证,客户端也要验证服务器证书,

因此,必须把服务器证书添加到浏览器的“受信任的根证书颁发机构”。

由于不能直接将keystore格式的证书库导入,

必须先把服务器证书导出为一个单独的CER文件,使用如下命令:

keytool -keystore D:/keys/tomcat.keystore -export -alias tomcat -file D:/keys/server.cer

2、

双击server.cer文件,按照提示安装证书,

将证书填入到“受信任的根证书颁发机构”。

填入方法: 这里需要打开IE浏览器

打开浏览器 - 工具 – internet选项 – 内容 – 证书 – 把中级证书颁发机构里的www.localhost.com(该名称即时你前面生成证书时填写的名字与姓氏)证书导出来-再把导出来的证书导入 受信任的根颁发机构 就OK了。

第五步:配置Tomcat服务器

修改tomcat中server.xml

<Connector  port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true"
maxThreads="150"
scheme="https"
secure="true"
clientAuth="true"
sslProtocol="TLS"
keystoreFile="D:/keys/tomcat.keystore"
keystorePass="123456"
truststoreFile="D:/keys/tomcat.keystore"
truststorePass="123456" />

属性说明:

clientAuth:设置是否双向验证,默认为false,设置为true代表双向验证

keystoreFile:服务器证书文件路径

keystorePass:服务器证书密码

truststoreFile:用来验证客户端证书的根证书,此例中就是服务器证书

truststorePass:根证书密码

注意:

① 设置clientAuth属性为True时,需要手动导入客户端证书才能访问。

② 要访问https请求 需要访问8443端口,访问http请求则访问Tomcat默认端口(你自己设置的端口,默认8080)即可。

总结

经过以上五步,你使用HTTPS 端口为8443 进行访问的时候 就是经过SSL信息加密,不怕被截获了。

通话的双方,必须是都拥有证书的端,才能进行会话,换句话说,就是只有安装了咱证书的客户端,才能与服务器通信。

Springboot2.x配置https

添加配置文件

其中 server.port 对应的是https使用的端口

# 端口号
server.port=8443
# 项目上下文
server.servlet.context-path=/demo
# ssl证书的位置
server.ssl.key-store=D:/client1.p12
# 生成证书时填的密码
server.ssl.key-store-password=123456
# 证书类型
server.ssl.key-store-type=PKCS12
# 证书别名
server.ssl.key-alias=client1

添加注解,启动配置

@Bean
    public TomcatServletWebServerFactory servletContainer() { //springboot2 新变化
        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(initiateHttpConnector());
        return tomcat;
    }

    private Connector initiateHttpConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setPort(8081);
        connector.setSecure(false);
        connector.setRedirectPort(8443);
        return connector;
    }

浏览器访问

https://localhost:8443/demo/

同时如果访问:http://localhost:8081/demo 也会自动跳转到https

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

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

相关文章

计算机中的大小端存储

在讲C语言的时候&#xff0c;有讲到大小端的内容&#xff0c;这里呢对大小端的相关内容进行了整理&#xff0c;有需要的可以参考一下&#xff01; 大端和小端来自一个小故事&#xff1a;端模式(Endian)的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的…

mysql导致索引失效的常见情况以及命名规范索引计划分析

1、失效的情况 1.前导模糊查询不能利用索引(like ‘%XX’或者like ‘%XX%’) 假如有这样一列code的值为’AAA’,‘AAB’,‘BAA’,‘BAB’ ,如果where code like %AB’条件&#xff0c;由于前面是 模糊的&#xff0c;所以不能利用索引的顺序&#xff0c;必须一个个去找&#xf…

虚拟机的Linux安装redis

1&#xff0c;下载redis 可以去官网下载压缩包 2&#xff0c;环境准备 我看很多文章都说要安装yum&#xff0c;但是在终端界面一直都是安装失败&#xff0c;后面才知道我的虚拟机是Ubuntu版本&#xff0c;而Ubuntu版本一般不使用yum命令&#xff0c;一般都是使用apt-get命令…

RANSAC: Random Sample Consensus

目录RANSAC算法基本思想和流程迭代次数推导参考RANSAC RANSAC(RAndom SAmple Consensus,随机采样一致)算法是从一组含有外点(outliers)的数据中正确估计数学模型参数的迭代算法。“外点”一般指的的数据中的噪声&#xff0c;比如说匹配中的误匹配和估计曲线中的离群点。所以&a…

电脑黑屏却开着机是怎么回事?解决黑屏的快捷方法

我们经常会用到电脑&#xff0c;但是你真的了解电脑相关知识吗&#xff1f;遇到比较复杂的电脑问题&#xff0c;你是否会手足无措&#xff1f;电脑黑屏却开着机这是什么原因造成的&#xff0c;我们有什么好办法恢复黑屏的电脑吗&#xff1f; 本文针对电脑黑屏却开着机的情况&a…

PCB生产工艺 | 第三道之沉铜,你都了解吗?

衔接上文&#xff0c;继续为朋友们分享普通单双面板的生产工艺流程。 如图&#xff0c;第三道主流程为沉铜。 沉铜的目的为&#xff1a; 在整个印制板&#xff08;尤其是孔壁&#xff09;上沉积一层薄铜&#xff0c;以便随后进行孔内电镀&#xff0c;使孔金属化&#xff08;孔…

小众点评项目要点内容总结【面试用】

小众点评项目要点 文章目录小众点评项目要点1.使用Redis代替Session登录1.1 Session登录存在的问题1.2 使用Redis代替Session登录分析1.3 使用Redis登录的流程1.4 解决Redis中有效期问题2.使用Redis作为缓存2.1 为什么使用缓存2.2 缓存策略2.3 解决缓存穿透2.4 解决缓存雪崩2.5…

CSS响应式设计——(视口/网格视图/媒体查询/图像/视频)看这一篇就够了

目录 响应式网页设计 - 简介 什么是响应式网页设计&#xff1f; 为所有用户获得最佳体验的设计 响应式网页设计 - 视口 什么是视口&#xff1f; 设置视口 把内容调整到视口的大小 响应式网页设计 - 网格视图 什么是网格视图&#xff1f; 构建响应式网格视图 实例 C…

【冷知识】如何快速获取自己的微信公众号关注页的链接地址?

一&#xff1a;业务场景 目前微信公众号的关注方法基本有三种: 扫描公众号二维码搜索公众号账号名称通过阅读公众号发布出来的公众图文,点击上面的微信号名称(右上角三点),可以查看公众号,进入关注页面。 但是如果想实现通过一个链接直接跳转到公众号的关注页面&#xff0c;…

VRP系统(视图介绍以及基本命令)

前言 VRP (Versatile Routing Platform)即通用路由平台&#xff0c;是华为在通信领域多年的研究经验结晶&#xff0c;是华为所有基于IP/ATM构架的数据通信产品操作系统平台。运行VRP操作系统的华为产品包括路由器、局域网交换机、ATM交换机、拨号访问服务器、IP电话网关、电信级…

【Hadoop】Hadoop 3.x 新特性总览

Hadoop 3.x 新特性剖析系列11. 概述2. 内容2.1 JDK2.2 EC技术2.3 YARN的时间线V.2服务2.3.1 伸缩性2.3.2 可用性2.3.3 架构体系2.4 优化Hadoop Shell脚本2.5 重构Hadoop Client Jar包2.6 支持等待容器和分布式调度2.7 支持多个NameNode节点2.8 默认的服务端口被修改2.9 支持文件…

数据量过大,使用saveBatch保存数据太慢如何解决:

数据量过大&#xff0c;使用saveBatch保存数据太慢如何解决&#xff1a; 在使用mybatis-plus的saveBatch方法时发现保存太慢&#xff0c;会生成一大堆的insert&#xff0c;而不是一批一批的&#xff0c;影响因素可能有两个&#xff0c;如下&#xff1a; 1. mybatis-plus使用s…

一文读懂SCADA系统的组件功能及应用

什么是SCADASCADA是一个功能强大的控制系统&#xff0c;旨在收集&#xff0c;分析和可视化来自工业设备的数据。SCADA系统自动提取、监控、处理、分发、记录和显示从远程现场设备(如传感器、工厂机器、电机、泵、阀门)和工业企业、制造设施、核电站和炼油厂等资产密集型环境中的…

kkFileView 文件在线预览部署

一、什么是kkFileView kkFileView为文件文档在线预览解决方案&#xff0c;该项目使用流行的spring boot搭建&#xff0c;易上手和部署&#xff0c;基本支持主流办公文档的在线预览&#xff0c;如doc,docx,xls,xlsx,ppt,pptx,pdf,txt,zip,rar,图片,视频,音频等等。 官方地址kkFi…

MasterSlave概念与配置与eeprom信息擦除解决步骤

目录 一、Master&Slave概念与配置​ 1.Master&Slave概念​ 2.期待协商结果​ 3.RENIX配置​ 4.帮助文档​ 二、eeprom信息擦除解决步骤​ 1.使用SSH管理软件连接​​网络测试仪​​ 2.使用“cd /opt/eeprom”命令进入eeprom文件夹 3.进入eeprom文件夹 4.重启…

GPU云服务器CentOS环境下的配置教程

CnetOS环境部署 CentOS是支持自动安装的cuda以及相关驱动的&#xff0c;我们就直接安装吧 测试环境 登录后首先检查系统是否有支持 CUDA 编程的 GPU&#xff0c;使用如下命令查看当前GPU的型号。可以识别出NVIDIA T4 lspci | grep -i nvidia输入nvidia-smi&#xff0c;这里…

KernelShark分析内核任务执行过程

一、KernelShark简介 KernelShark是一个非常实用的工具&#xff0c;其可以搭配 trace-cmd 使用&#xff0c;将内核的任务执行过程以直观的形式展现出来。下面的文档中详细的介绍了KernelShark的使用方法和功能&#xff0c;这里不再详细描述 https://www.kernelshark.org/Docum…

C语言--模拟实现库函数strcpy

目录前言strcpy实现的基本原理函数的模拟实现代码优化assert--断言const关键字strcpy的返回值结语前言 本章内容我们将通过相关函数来实现库函数中的strcpy。 strcpy实现的基本原理 C语言 strcpy()函数用于对字符串进行复制&#xff08;拷贝&#xff09;。需要的头文件为 &l…

IPtables进行端口复用

目录第一种方式&#xff1a;ICMP做遥控开关1、创建端口复用链2、创建端口复用规则&#xff0c;将流量转发至22端口3、开启开关4、关闭开关5、lets do it第二种方式&#xff1a;利用tcp数据包的关键字做遥控开关1、端口复用链2、端口复用规则(与上面一致)3、开启开关4、关闭开关…

手机上怎么制作动图?两招教你手机在线制作gif动画

想要在手机上制作gif动态图片&#xff0c;还不想下载软件的时候要怎么办呢&#xff1f;很简单&#xff0c;下面给大家分享两招在线gif制作&#xff08;https://www.gif.cn/&#xff09;的工具&#xff0c;不需要下载任何软件。小白也能轻松上手&#xff0c;支持原画质导出&…