PKI-Lab
Task 1: Becoming a Certificate Authority (CA)
文件配置:
- 将usr/lib/ssl下的openssl.cnf复制到自己的CA文件夹下并将unique_subject这行的注释取消掉,并在CA文件夹中创建一个空文件index.txt,并创建一个含有数字1000的文件serial,以及创建一系列文件
- 执行命令,生成私钥文件ca.key和公钥证书ca.cry
openssl req -config openssl.cnf -x509 -newkey rsa:4096 -sha256 -days 3650 -keyout ca.key -out ca.crt
- 分别执行以下命令
openssl x509 -in ca.crt -text -noout
得到证书相关信息
openssl rsa -in ca.key -text -noout
随后输入生成时设置的密码dongda得到私钥相关信息
针对实验手册中提出的问题,我们回答如下:
- What part of the certificate indicates this is a CA’s certificate?
这里CA:TRUE表明这是一个CA证书
- What part of the certificate indicates this is a self-signed certificate?
这里的Issuer和Subject信息相同说明这是一个自签名证书
- In the RSA algorithm, we have a public exponent e, a private exponent d, a modulus n, and two secret numbers p and q, such that n = pq. Please identify the values for these elements in your certificate and key files
公钥指数e:
模数n:
私钥指数d:
p:
q:
综上综述,通过执行以上操作,我们完成了生成CA证书、密钥的任务
Task 2: Generating a Certificate Request for Your Web Server
使用以下命令生成:
openssl req -newkey rsa:2048 -sha256 -keyout server.key -out server.csr -subj "/CN=www.HZH2022.com/O=HZH2022 Inc./C=CN" -passout pass:dees
再利用以下两个命令查询:
openssl req -in server.csr -text -noout
openssl rsa -in server.key -text -noout
添加拓展域名/Adding Alternative names:
直接在生成证书的命令后添加
-addext "subjectAltName=DNS:www.HZH2022.com, DNS:www.HZH2022A.com, DNS:www.HZH2022B.com"
查看发现拓展域名已添加
Task 3: Generating a Certificate for your server
使用task2中的证书申请与之前生成的CA证书为服务器创建证书
openssl ca -config my_openssl.cnf -policy policy_anything -md sha256 -days 3650 -in server.csr -out server.crt -batch -cert ca.crt -keyfile ca.key
之后CA文件夹内生成了一些新文件
使用命令openssl x509 -in sever.crt -text -noout发现并未生成拓展域名,因此将copy过来的cnf文件的下面这行取消注释
重新签署证书,并使用命令openssl x509 -in sever.crt -text -noout,可知拓展域名已写入
Task 4: Deploying Certificate in an Apache-Based HTTPS Website
- 根据模板修改HZH2022_apache_ssl.conf以及Dockerfile,并将对应各种文件移入相应位置
在etc/hosts中添加我们的域名
之后在虚拟机执行dcbuild
执行dcup启动container
- 进入container中,在docker10.9.0.80使用以下命令启动ssl服务
a2enmod ssl
a2ensite HZH2022_apache_ssl
接着执行service apache2 start
输入密码dees之后在Ubuntu firefox游览器成功访问https://www.hzh2022.com
- VM和container的共享文件夹
创建完container后,在VM中的volumes中添加文件share_test,在container中进入volumes中ls可看到添加的share_test文件,说明文件共享功能正常
- 我们发现,在访问时游览器提示访问不安全,这是因为游览器中并无我们的CA证书,因而需要添加证书,打开firefox游览器的设置,在Privary&Security中找到Certificate,导入我们原先生成的ca.crt,之后重新访问发现警告提示消失,说明游览器已经信任来自我们的证书。
-
Task 5: Launching a Man-In-The-Middle Attack
- 我们的www.lib.seu.edu.cn是东南大学图书馆的网站,我们在/etc/hosts中将DNS缓存改成了10.9.0.80 www.lib.seu.edu.cn,因而所有要访问 www.lib.seu.edu.cn的用户都被劫持到我们的 10.9.0.80这个地方
- 我们通过修改index.html的内容来模仿东南大学图书馆的网站,则用户访问时将被定位到我们仿造的网站
Task 6: Launching a Man-In-The-Middle Attack with a Compromised CA
- 不严格来说,通过前面的步骤已经完成了这个任务,但由于网站证书是用的还是www.HZH2022.com,因此在访问时游览器还会提醒网站证书存在问题。
- 假设我们得到了被破坏的CA的私钥,同以上几个步骤利用这个私钥为所要伪造的网站创建新的证书
修改一系列配置文件,重新构建container并启动ssl
访问网站可发现网站以定位到我们伪造的网站,且游览器没有进行任何拦截
至此完成了MITM Attack