收藏夹吃灰系列:实现springboot使用JDK自带的keytool生成SSL证书并配置HTTPS | 超级详细,建议收藏!

Posted bug菌√

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了收藏夹吃灰系列:实现springboot使用JDK自带的keytool生成SSL证书并配置HTTPS | 超级详细,建议收藏!相关的知识,希望对你有一定的参考价值。

大家好,我是bug菌~~

       Hi ,小伙伴们,我们又见面啦,本来由于身体不适不太想写文,一直流鼻涕脑袋都快傻掉了,可谁让bug菌这么宠你们呢,游戏可以不玩,病假可以不休息,但是文章必须更!

       群声呵斥:"bug菌,振作起来~你的小伙伴们都等着急了,还不赶紧开始"。

       bug菌(眉头紧皱):"好的好的,这就来啦~"。

       不知你们对https有过多少了解,今天,我就来给大家聊聊,如何使用jdk自带的keytool工具生成一个SSL证书并配置到项目上,并使用https访问swagger ui页;具有很好的教学价值,希望小伙伴们根据这篇文章可以有所收获,建议小伙伴们先收藏后阅读哦。

小伙伴们如果觉得文章不错,点赞、收藏、评论,分享走一起呀,记得给bug菌来个一键三连~~

首先,我先来考考大家

一、http是什么?

http想必大家都再熟悉不过,大部分网站网址都是http://开头,对吧,那么,http究竟是啥?

http:超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收html页面的方法。

二、那是https 又是什么?

HTTPS:是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。

PS:TLS是传输层加密协议,前身是SSL协议,由网景公司1995年发布,有时候两者不区分。

好啦,如果要了解更多相关概念,我改天再单独更一起关于http协议与https协议相关的文章,这里就不一一赘述啦;bug菌要开始今天的正题啦。


HTTPS是HTTP的安全版本,旨在提供数据传输层安全性(TLS)。当你的应用不使用HTTP协议的时候,浏览器地址栏就会出现一个不安全的提示。HTTPS加密每个数据包以安全方式进行传输,并保护敏感数据免受窃听者或黑客的攻击。

说了这么多,那到底该如何实现https协议呢?

你可以通过在Web应用程序上安装SSL证书来实现HTTPS,互联网上受信任的证书通常是需要(CA)颁发的证书。为了学习目的,你也可以使用自签名证书,比如:使用jdk自带的 Keytool 来生成自签名证书。

那什么是ksytool呢?

Keytool 是一个Java 数据证书的管理工具 ,Keytool 将密钥(key)和证书(certificates)存在一个称为keystore的文件中 在keystore里,包含两种数据: 

密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密) 

可信任的证书实体(trusted certificate entries)——只包含公钥

ailas(别名)每个keystore都关联这一个独一无二的alias,这个alias通常不区分大小写。

如下我就来演示一下:

三、如何通过jdk自带的Keytool 生成SSL证书?

#1、先cd到你jdk的bin目录下:

生成ssl证书命令如下:

./keytool -genkey -alias xiaoma -dname "CN=xiaoma,OU=xiaoma,O=xiaoma,L=FengXian,ST=ShangHai,C=CN" -ext san=ip:192.168.0.110 -keypass "xiaoma" -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore xiaoma.keystore -validity 3650

命令介绍:分阶段生成:

keytool -genkey

-alias xiaoma(别名)

-dname "CN=xiaoma(名字与姓氏),OU=xiaoma(组织单位名称),O=xiaoma(组织名称),L=FengXian(城市或区域名称),ST=ShangHai(州或省份名称),C=CN(单位的两字母国家代码)"

-ext san=ip:192.168.0.110(本机ip配置)

-keypass "xiaoma"(别名密码)

-storetype PKCS12(证书类型)

-keyalg RSA(算法)

-keysize 2048(密钥长度)

-keystore xiaoma.keystore(指定生成证书的位置和证书名称)

-validity 3650(有效期,天单位)

#2、完成上述步骤后,便会创建PKS密钥并将其存储在JDK Bin文件夹下。

然后把生成的xiaoma.keystore复制到你项目根目录下;

cp xiaoma.keystore /e/luoyong/xiaoma/code/xm-system/

如下是我的项目结构: 

#3、配置证书配置

# server相关配置
server:
  ssl:
    # 证书的路径
    key-store: xiaoma.keystore
    # 证书密码,请修改为您自己证书的密码.
    key-store-password: xiaoma
    # 秘钥库类型
    keyStoreType: PKCS12
    # 证书别名
    keyAlias: xiaoma

#4、启动项目,测试一波

打开浏览器通过https访问swagger路径试试:

https://192.168.0.110:8081/doc.html

然后会跳出一个授信界面;点解【接受风险并继续】就好了

以火狐浏览器为例:

ok,成功使用https 访问

Chrome浏览器也是一样,授信一遍即可;

四、keystore信息查看: 

 keytool -list -v -keystore 指定keystore -storepass 密码

如: 

/usr/lib/jvm/jdk1.8.0_60/bin/keytool -list  -v -keystore
/usr/lib/jvm/jdk1.8.0_60/bin/xiaoma.keystore -storepass xiaoma

如果你不太记得你jdk安装路径,没关系,你可以用$JAVA_HOME 变量来代替,顺便代替绝对路径;前提是你配置了jdk。

拓展:

$是取环境变量的值

JAVA_HOME是环境变量。 echo $JAVA_HOME打印java安装目录的环境变量值

$JAVA_HOME/bin/keytool -list -v -keystore $JAVA_HOME/bin/xiaoma.keystore -storepass xiaoma


OK,以上就是本期的所有干货内容啦!听完我的课,是不是该有所表示呢,要是我,果断就给它pia的一下点亮!

再不行,就当支持bug菌熬夜爆肝码了两万多字的份上,给个鼓励啦。

原创不易

请鼓励支持一下咯

点赞三连

走起

各位兄弟姐妹萌

bug菌不胜感激

~

~~~

 若是还不够吃,bug菌还有!要不再投点?


 五、往期热文推荐:

若想解锁更多高阶隐藏玩法,请关注bug菌的专栏《收藏夹吃灰系列》。bug菌会持续更新哒,只因你的特别关注,我定不负所望~


❤如果文章对您有所帮助,就请在文章末尾的左下角把大拇指点亮吧!(#^.^#);

❤如果喜欢bug菌分享的文章,就请给bug菌点个关注吧!(๑′ᴗ‵๑)づ╭❤~;

❤对文章有任何问题欢迎小伙伴们下方留言或者入群探讨【群号:708072830】;

❤鉴于个人经验有限,所有观点及技术研点,如有异议,请直接回复参与讨论(请勿发表攻击言论,谢谢);

❤版权声明:本文为博主原创文章,转载请附上原文出处链接和本文声明,版权所有,盗版必究!(*^▽^*).

以上是关于收藏夹吃灰系列:实现springboot使用JDK自带的keytool生成SSL证书并配置HTTPS | 超级详细,建议收藏!的主要内容,如果未能解决你的问题,请参考以下文章

收藏夹吃灰系列:Springboot配置Thymeleaf实现静态页面访问 | 超级详细,建议收藏!

进收藏夹吃灰系列——Java基础快速扫盲

收藏夹吃灰系列(十三):Springboot项目配置多数据源,实例演示 | 开箱即用,超级详细。

收藏夹吃灰系列(十三):Springboot项目配置多数据源,实例演示 | 开箱即用,超级详细。

收藏夹吃灰系列:使用MultipartFile实现图片指定路径上传下载并使用postman测试教程 | 附完整源码,强烈建议收藏!

收藏夹吃灰系列:实现图片倒排序并取出时间最近的那一张!并下载到本地 | 超级详细,建议收藏!