ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SEEDLAB2.0-PKI lab

2021-04-16 18:32:08  阅读:297  来源: 互联网

标签:证书 CA openssl lab server https apache PKI SEEDLAB2.0


PKI Lab

证书生成任务在ubuntu中进行,web server运行在容器中
在本次实验中,我们使用www.bank32.com为例介绍如何设置https web server。
我们将这个名字和容器的ip绑定,这一步在hosts中进行。

拉取镜像,创建实验环境
在这里插入图片描述

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

Task1成为CA
CA是用于签发数字证书的可信实体
一些商业CA被称作根CA(root CA),VeriSign是最大的CA
根CA是自签名的self-signed。根CA证书通常预先加载到大多数操作系统、浏览器、已经其他依赖PKI的软件中。根CA是被无条件信任的。

为了使用openssl创建证书,需要有配置文件。配置文件通常以.cnf为后缀,使用openssl的三个命令:ca,req,x508。
默认情况下,openssl使用的配置文件来自/usb/lib/ssl/openssl.cnf。由于我们要改变这个文件,所以复制一份到我们自己的路径下,并指示openssl使用这一份。
[CA_default]是配置文件中,我们需要准备的默认设置部分。我们需要创建一些子目录。去掉unique_subject的注释,允许创建证书。
在这里插入图片描述

Index.txt创建一个空文件即可。对于serial文件,以字符串格式写入一个数字就行,比如1000.一旦准备好了配置文件openssl.cnf,就可以开始创建并签发证书了。
使用下列命令为CA生成一个自签名的证书
在这里插入图片描述

此时将要求我们输入一个口令,不要丢失这个口令,因为以后我们要使用这个CA味其他证书签名时都需要输入这个口令
在这里插入图片描述

执行完成后将会输出ca.key和ca.crt
Ca.key有CA的私钥,ca.crt有公钥证书。
当然也可以在命令行中直接指定要填写的信息,比如使用-subj指定subject信息等
在这里插入图片描述

这里指定的密码是dees
可以使用下列命令查看X509证书解码后的内容是什么,以及RSA密钥
在这里插入图片描述
在这里插入图片描述

Task2 为web sever生成证书
一个公司叫bank32.com想要从我们的CA获得公钥证书。首先需要生成CSR(certificated signing request),其中包括公司公钥以及身份信息。CSR发给CA后,CA会校验身份信息并生成证书
生成CSR的命令和创建自签名的CA证书的命令类似,唯一区别就是加上了-x509选项
下列命令就是生成CSR
在这里插入图片描述

会生成一对公私钥对,然后从公钥创建一个证书签名请求。可以使用下列命令查看CSR的解码后内容以及私钥文件
在这里插入图片描述在这里插入图片描述

一些网页可能会有不同的url,比如www.example.com,example.com.example.net,example.org等,他们指向相同的web server.由于浏览器执行的hostname匹配策略,证书中的common name必须和server的hostname匹配,否则浏览器会拒绝与server通信。
为了允许一个整数有多个name,X.509标准定义了证书的扩展。该扩展被称为Subject Alternative Name(SAN)。使用SAN扩展,可以在证书的subjectAltName域中指定一些hostname
我们可以添加下列的选项到openssl req命令中。
在这里插入图片描述
在这里插入图片描述

为你的server生成证书
CSR文件需要有CA签名来组成证书。CSR文件通常被发送给被信任的CA用来请求他们的签名。
下列的命令将证书签名请求server.csr转到x509证书server.crt(通过使用ca.crt,ca.key)
在这里插入图片描述

在基于apache的https 网页上部署证书
我们需要配置apache服务器,这样它才能知道从哪里获取私钥和证书。在我们的容器中,我们已经为bank32.com设置了一个https页面。
网页文件在/etc/apache2/sites-available目录中。
在这里插入图片描述

在中间那个文件中可以看到:
在这里插入图片描述

可以看到,https网页在https://www.bank32.com
servername指定了网页的name,documentroot指定了这个网页文件的位置
Serveralias允许网页有不同的name。
还告诉了apache server,证书和密钥文件在哪。
为了生效,我们需要apache ssl模块生效然后enable这个页面。
使用下面的命令即可完成
在这里插入图片描述

apache服务器在容器中不会被自动启动,因为需要口令解锁私钥。进入容器后运行下列命令来启动
在这里插入图片描述

apache启动时,需要为每个https页面加载私钥。我们的私钥被加密了,所以apache将要要求我们输入口令来解密。在容器中,口令是dees
在这里插入图片描述

上图看到浏览器和server的流量都是走https了

将证书加载进firefox中
在这里插入图片描述

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

可以看到一系列被firefox接受的证书。我们在此导入自己的证书。

中间人攻击
在这里插入图片描述

标签:证书,CA,openssl,lab,server,https,apache,PKI,SEEDLAB2.0
来源: https://blog.csdn.net/yalecaltech/article/details/115769255

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有