‍作者:bug菌
✏️博客:CSDN、、infoQ、51CTO等
简介:CSDN博客专家,历届博客之星Top30,年度人气作者No.40,/InfoQ/51CTO等社区优质创造者,全网粉丝算计10w+;硬核公众号「 猿圈美妙屋」,欢迎小伙伴们的加入,一起秃头,一起变强。
..
✍️温馨提醒:本文字数:4999字, 阅读完需:约 5 分钟

一、前言

嗨,家人们,我是bug菌呀,今天,我要为自己代言,噔噔噔《Ubuntu零根底入门教育》开篇啦,希望能协助更多的初学者们快速入门Ubuntu宝塔!

小伙伴们在批阅文章的过程中假如觉得文章对您有一丝丝协助,还请别小气您手里的赞呀,斗胆的把文章点亮吧,您的点赞三连(收藏⭐+重视‍+留言)便是对bug菌我创造道路上最好的鼓舞与支撑。时光不弃‍♀️,创造不断,加油☘️

二、正文

环境说明: Ubuntu20.04 + idea2019.3 +jdk1.8 +SpringBoot 2.3.1RELEASE

1️⃣http &&https

不知你们对超文本传输协议https有过多少了解,今天,我就来给咱们聊聊它,传统的都是经过http协议来发布HTML页面和拜访,正如所知,http默许用的port是80,而https用的是443端口,但https比http安全,为什么?接下来我会给咱们比照一下,你们就清楚了。

HTTP 由于是明文传输,所以安全上存在以下三个危险:

  • 窃听危险,比方链路追踪上能够获取通讯内容,用户号简略被盗取。
  • 篡改危险,比方强制植入垃圾广告。
  • 假充危险,比方假充淘宝网站。

HTTPS在 HTTP 与 TCP 层之间加入了SSL/TLS协议,就能够很好的处理上述的危险,比方:

  • 信息加密:交互信息无法被盗取,但你的号会因为「本身忘记」账号而没。
  • 校验机制:无法篡改通讯内容,篡改了就不能正常显现。
  • 身份证书:无法假充网站。

可见,只要本身不做「恶」,SSL/TLS 协议是能确保通讯是安全的。

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

那今天,咱们亲自来实现怎么生成一个SSL证书并装备到项目中去运用https来拜访项目,比方https://127.0.0.1:8080/api/doc.html

2️⃣生成HTTPS方法

咱们能够经过在Web运用程序上装置SSL证书来实现HTTPS,互联网上受信任的证书通常是需求(CA)颁发的证书。为了学习目的,咱们能够运用自签名证书,比方:运用Java Keytool生成自签名证书或许使用Openssl东西生成证书,两种方法,假如多金,也能够从SSL证书授权中心购买证书。

如下咱们就经过第一种方法,使用JDK东西来生成证书。

3️⃣Keytool概念

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

  • 密钥实体(Key entity)——密钥(secret key)又或许是私钥和配对公钥(选用非对称加密)
  • 可信任的证书实体(trusted certificate entries)—— 只包含公钥

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

JDK中keytool常用命令:

-genkey 在用户主目录中创立一个默许文件".keystore",还会发生一个mykey的别号,mykey中包含用户的公钥、私钥和证书
(在没有指定生成方位的情况下,keystore会存在用户系统默许目录,如:对于window xp系统,会生成在系统的C:/Documents and Settings/UserName/文件名为“.keystore”)
-alias 发生别号
-keystore 指定密钥库的称号(发生的各类信息将不在.keystore文件中)
-keyalg 指定密钥的算法(如 RSA DSA(假如不指定默许选用DSA))
-validity 指定创立的证书有效期多少天
-keysize 指定密钥长度
-storepass 指定密钥库的暗码(获取keystore信息所需的暗码)
-keypass 指定别号条目的暗码(私钥的暗码)
-dname 指定证书拥有者信息 例如: "CN=姓名与姓氏,OU=安排单位称号,O=安排称号,L=城市或区域称号,ST=州或省份称号,C=单位的两字母国家代码"
-list 显现密钥库中的证书信息keytool-list -v -keystore 指定keystore -storepass 暗码
-v 显现密钥库中的证书具体信息
-export 将别号指定的证书导出到文件keytool-export -alias 需求导出的别号 -keystore 指定keystore -file 指定导出的证书方位及证书称号 -storepass 暗码
-file 参数指定导出到文件的文件名
-delete 删去密钥库中某条目keytool-delete -alias 指定需删去的别 -keystore 指定keystore -storepass 暗码
-printcert 查看导出的证书信息keytool-printcert -file yushan.crt
-keypasswd 修正密钥库中指定条目口令keytool-keypasswd -alias 需修正的别号 -keypass 旧暗码 -new 新暗码 -storepass keystore暗码 -keystore sage
-storepasswd 修正keystore口令keytool-storepasswd -keystore e:/yushan.keystore(需修正口令的keystore) -storepass 123456(原始暗码) -new yushan(新暗码)
-import 将已签名数字证书导入密钥库keytool-import -alias 指定导入条目的别号 -keystore 指定keystore -file 需导入的证书

下面是各选项的缺省值。
-alias"mykey"
-keyalg"DSA"
-keysize1024
-validity90
-keystore用户宿主目录中名为.keystore的文件
-file读时为规范输入,写时为规范输出

4️⃣keystore怎么证书

keytool能够分为【分阶段生成】和【一次性生成】,分别如下:

【分阶段生成】

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(有效期,天单位)

【一次性生成】

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

5️⃣生成SSL证书

先cd到你jdk装置目录的bin目录下,输入如下命令:

./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

具体截图演示:

项管让你在项目上以HTTPS协议访问,你能说你不会配?

6️⃣证书引进项目

完结上述步骤后,便会创立PKS密钥并将其存储在JDK Bin文件夹下。然后把生成的xiaoma.keystore复制到你项目根目录下。

拷贝命令如下:仅供参考

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

项目截图如下:

项管让你在项目上以HTTPS协议访问,你能说你不会配?

7️⃣项目装备SSL证书特点

在你的项目装备文件中装备SSL证书,例如application.properties或application.yaml装备文件中装备各种server.ssl.*特点来声明性运用SSL(https),比方如下设置application.properties装备文件来设置SSL特点,仅供参考:

项管让你在项目上以HTTPS协议访问,你能说你不会配?

或application.yaml装备文件装备:

# server相关装备
server:
  ssl:
    # 证书的途径
    key-store: xiaoma.keystore
    # 证书暗码,请修正为您自己证书的暗码.
    key-store-password: xiaoma
    # 秘钥库类型
    keyStoreType: PKCS12
    # 证书别号
    keyAlias: xiaoma

8️⃣在线测验

重启项目,咱们来测验验证一波,翻开浏览器运用https协议来拜访swagger途径试试:https://127.0.0.1:8080/api/doc.html

项管让你在项目上以HTTPS协议访问,你能说你不会配?

浏览器会提示验证危险,咱们直接点击高档并挑选 [ 承受危险并持续 ]

项管让你在项目上以HTTPS协议访问,你能说你不会配?

ok,咱们看到https协议,能正常拜访swagger在线文档。

项管让你在项目上以HTTPS协议访问,你能说你不会配?

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

项管让你在项目上以HTTPS协议访问,你能说你不会配?
项管让你在项目上以HTTPS协议访问,你能说你不会配?

提示: 在springboot项目中装备证书仅仅为了简略的测验,真正的出产环境会在nginx上装备证书。

往期热文引荐

  1. 史上最全教育Windows本地环境搭建Ubuntu20.04
  2. Ubuntu20.04中装置IntelliJ IDEA开发东西及Springboot项目运转?超级具体教程
  3. 简易五步教你设置北京时区
  4. 怎么设置中文界面及装置搜狗输入法?
  5. Ubuntu装置Maven构建东西
  6. Ubuntu怎么装置Git代码管理东西
  7. 无法联网?教你轻松搞定
  8. 搭建Redis非关系型数据库,傻瓜式教育
  9. Ubuntu20.04装置Rosbridge并进行小乌龟测验
  10. 一键教你怎么Ubuntu磁盘分区及GParted磁盘分区东西运用
  11. 手把手教育怎么创立txt记事本
  12. jdk1.8轻松装置搭建
  13. Ubuntu常用命令大全(长期更新)
  14. 怎么处理ubuntu20.04终端显现内容颜色问题?我来教你
  15. 怎么设置Ubuntu20.04默许以root权限登录?我来教你
  16. 轻松处理Ubuntu装置ros报错E: Unable to locate package ros-kinetic-desktop-full问题

ok,以上便是我这期的全部内容啦,假如还想学习更多,能够看看我的专栏Ubuntu零根底入门教育,不积跬步,无以至千里; 不积小流,无以成江海,一口吃不成一个大胖子,加油!咱们下期拜拜~~

文末

我是bug菌,一名想走出大山改变命运的程序猿。接下来的路还很长,都等待着咱们去突破、去挑战。来吧,小伙伴们,咱们一起加油!未来皆可期,fighting!


项管让你在项目上以HTTPS协议访问,你能说你不会配?
项管让你在项目上以HTTPS协议访问,你能说你不会配?

感谢仔细读完我博客的铁子萌,在这里呢送给咱们一句话,不管你是在职仍是在读,绝对终身受用。
时间警醒自己:
抱怨没有用,全部靠自己;
想要过更好的日子,那就要逼着自己变的更强,日子加油!!!

本文正在参加「金石方案」