IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> https学习笔记02 -> 正文阅读

[网络协议]https学习笔记02

怎样给一个网站办法安全证书呢?以tomcat为例,我们正常访问localhost:8080都是不安全的网站,那么怎样使得这个网站安全呢?

首先我先全局说一下,我们需要先下载openssl,然后使用openssl下载和配置我们需要的证书,也就是证书三件套,配置本地的CA证书,Server证书以及Client证书!到时候你就发现三种证书配置的方式差不多

接下来正式开始从第一部讲解:首先下载openssl,下载的方式有两种,一种是源码自己配置,还有一种是大牛给你配好了.exe执行文件,我们无脑next就好:

http://slproweb.com/products/Win32OpenSSL.html

请添加图片描述
在这里插入图片描述

这里我们使用两个箭头的都可以,搭建可能会问第一个和第一个大小相差那么大,为什么下载第一个,因为第二个是给专业人员用的,我们只需要下载几MB的就好,我选择的是1.1.1这个版本,至于为什么不选3.0.0等等说

下载好了之后,我们需要安装在自己的目录:

请添加图片描述

然后为其添加环境变量:(系统变量下面的PATH)

在这里插入图片描述

然后再cmd里面:openssl version

请添加图片描述

下一步我们找到我们的openssl安装位置,右键点击openssl.exe,以管理员身份运行!(就是这里我第一次下载3.0.0每次一点这个.exe就一闪而过…还不知道怎么解决)请添加图片描述

然后就是一顿固定操作:(温馨提示:在你配置到下面有三步都是生成文件那个,你必须生成一个然后quit退出重新打开.exe生成一个然后再退出再打开!不知道为啥)

1:生成服务端私钥:genrsa -out server.key 1024请添加图片描述

2:生成服务端公钥:rsa -in server.key-pubout -out server.pem 请添加图片描述

3:生成客户端公钥:rsa -inclient.key -pubout -out client.pem

4:生成CA私钥:genrsa -out ca.key 1024

5:生成CA请求文件:opensslreq-new-keyca.key-outca.csr

请添加图片描述

注意:

State、Organization相关内容在生成客户端和服务器端证书的时候
也需要填写,但不要写成一样的,可以随意写如:myca,、myse,、mycl 
CommonName这一项,是最后可以访问的域名,因为是在本机,所以写成localhost,后面生成客户端和服务器端证书的时候也需要 写成localhost


6:生成CA证书:x509 -req -inca.csr -signkey ca.key -out ca.crt

7:生成服务端请求文件: req -new -key server.key -out server.csr

8:向自己的CA机构申请证书,签名过程需要CA的证书和私钥参与,最终颁发一个带有CA签名的证书:x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -inserver.csr -out server.crt

9:生成客户端请求文件:req -new -key client.key -out client.csr

10:同样向CA机构申请证书:x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -inclient.csr -out client.crt

请添加图片描述
请添加图片描述
请添加图片描述

11:转化为.p12格式的文件pkcs12 -export -in ca.crt -inkey ca.key -out ca.p12

12:导出server.p12格式文件:pkcs12 -export -in server.crt -inkey server.key- out server.p12

导出client.p12格式文件:pkcs12 -export -in client.crt -inkey client.key -out client.p12

13:?将server.p12文件转化为jks文件:keytool -importkeystore -keyalgEC -srckeystore server.p12 -destkeystore server.jks -srcstoretype pkcs12

请添加图片描述

通过上面的步骤我们会得到server.jks请添加图片描述

差不多生成了这么多东西,然后我们将server.jks拷贝到tomcat的conf文件夹下,然后修改一下server.xml:

请添加图片描述
在这里插入图片描述

改成这个样子以后,我们将生成的ca.p12和client.p12分别导入浏览器:我以chorm为例:

红箭头标注的是几个需要注意的点:

请添加图片描述

请添加图片描述
请添加图片描述

其实这里我多了一步就是windows+R键输入mmc:然后将两个localhost拖到受信任的根证书颁发机构下面

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

然后再谷歌访问https//localhost:8443:

请添加图片描述

使用ie访问:

请添加图片描述

成功!

常用的openssl命令:

格式转换

PEM私钥转PKCS#8

openssl pkcs8 -topk8 -in mysite.key -out mysite.pk8 -outform PEM

PKCS#8转PEM

openssl rsa -in mysite.pk8 -out mysite.key

PEM转PKCS12

openssl pkcs12 -export -inkey mysite.key -in mysite.pem -nodes -out mysite.p12(输出不带口令的p12证书)

openssl pkcs12 -export -inkey mysite.key -in mysite.pem -passout pass:123456 -out mysite.p12 (输出带口令的p12证书)

P12转证书

openssl pkcs12 -in mysite.p12 -nokeys -out mysite.pem

openssl pkcs12 -in mysite.p12 -nokeys -passin pass:123456 -out mysite.pem (p12文件带口令的情况)

P12转私钥

openssl pkcs12 -in mysite.p12 -nocerts -nodes -out mysite.key (输出不加密的私钥)

openssl pkcs12 -in mysite.p12 -nocerts -passout pass:123123 -out mysite.key (输出加密后的私钥)

openssl pkcs12 -in mysite.p12 -nocerts -passin pass:123456 -passout pass:123123 -out mysite.key (p12文件带口令的情况)
密钥操作
生成密钥

genrsa

openssl genrsa -out rsa.key 2048(私钥不带密码)

openssl genrsa -out rsa.key -aes256 -passout pass:123456 2048(私钥带密码)

ecparam

openssl ecparam -name CN-GM-ECC -out sm2.param

openssl ecparam -in sm2.param -out sm2.key -genkey -noout

genpkey

openssl genpkey -algorithm RSA -out rsa.key -pkeyopt rsa_keygen_bits:2048

openssl genpkey -parafile sm2.param -out sm2.key

``

不带密码的私钥==>带密码的私钥

openssl rsa -in rsa.key -out xxx.key -aes256 -passout pass:123456

openssl ec -in sm2.key -out xxx.key -sm4 -passout pass:123456

带密码的私钥==>不带密码的私钥

openssl rsa -in xxx.key -passin pass:123456 -out yyy.key

openssl ec -in xxx.key -passin pass:123456 -out yyy.key

pkey加解密私钥

openssl pkey -in rsa.key -out rsa_enc.key -des3 -passout pass:1234

openssl pkey -in rsa_enc.key -out rsa.key -passin pass:1234

从密钥对提取公钥

openssl rsa -in chen.key -pubout -out chen_pub.key
非对称加密
签名

openssl pkeyutl -sign -inkey rsa.key -in rsa.dat -out sign.dat

验签

openssl pkeyutl -verify -certin -inkey rsa.pem -in rsa.dat -sigfile sign.dat

openssl pkeyutl -verify -inkey rsa.key -in rsa.dat -sigfile sign.dat

加密

openssl pkeyutl -encrypt -inkey rsa.key -in rsa.dat -out enc.dat

解密

openssl pkeyutl -decrypt -inkey rsa.key -in enc.dat -out source.dat

pkcs7
签名

openssl smime -sign -in short.dat -signer rsa.pem -inkey rsa.key -out rsa.sig -outform PEM -nodetach -binary -md sha256

验签

openssl smime -verify -CAfile rsa-ca.pem -signer rsa.pem -in rsa.sig -inform PEM -noverify -content short.dat -binary

加密

openssl smime -encrypt -sha1 -in long.dat -outform PEM -out rsa.env -binary rsa.pem

解密

openssl smime -decrypt -in rsa.env -out rsa.plain -inkey rsa.key -inform PEM -binary

这个任务也是自己很用心的去解决问题,得出的结论就是,你要用用于尝试,不要害怕这个指令对不对,只要记录好自己的每一步,就渐勇敢往前冲,感觉出错到了无法挽回的地步就全部卸载删除,重新换一个版本继续,通过最近这几次的任务,我发现我逐渐自信起来,遇到问题居然一点点也不慌,哪怕完全没有头绪想了很久很久,我心里一直有一种神秘的直觉就是:我一定会解决这个问题是,只不过需要一点点时间!加油吧!

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-10-30 12:49:11  更:2021-10-30 12:49:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:41:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码