基于gmssl的CA系统构建及应用小组报告
北京电子科技学院
《信息安全工程技术应用》课程设计报告
基于gmssl的CA系统构建及应用

小组成员姓名:
20181301 刘天宁
20181304 石昊林
20181306 宁锦鹏
指导教师:娄嘉鹏
提交时间:2020年11月8日
一、设计方案及可行性分析
1.分析选题:我们小组对于选题有以下分析:
应用gmssl(或者openssl)制作证书,然后通过自己制作的证书来实现自制网站的https的实现(加锁)。
2.本组模型:
自创网站+自制基于openssl指令的证书+tomcat端口配置=基于gmssl的CA系统构建及应用(自制网站的https的实现)
HTTPS协议=SSL/TLS+HTTP协议。
3.设计方案:
我们小组对于课设选题基于gmssl的CA系统构建及应用有以下设计方案:
1)第一步:首先研究什么是gmssl(从具体指令研究)
我们小组通过研究以下gmssl命令来学习、掌握gmssl的使用:
Standard commands(标准命令)
:dsa dsaparam ec
ecparam enc errstr
gendh gendsa genpkey
Message Digest commands (see the `dgst' command for more details)(消息摘要命令))
:md_gost94 ripemd160 sha1
Cipher commands (see the `enc' command for more details)(密码命令)
:bf-ecb bf-ofb
camellia-128-cbcd camellia-128-ecb camellia-192-cbc camellia-192-ecb camellia-256-cbc camellia-256-ecb cast
2)第二步:使用openssl命令来搭建自己的CA系统。(询问过娄老师,娄老师说openssl或者gmssl都可以)
3)第三步:使用python语言创建一个网站,并且让网站通过我们编写的证书(CA的应用)实现https从而达到安全运行的目的(加锁)。
4.可行性分析:
1)通过对openssl相应指令的学习,我们小组已经可以较为熟练的掌握openssl的使用。
2)通过学习网上和书上的相关资料我们对http、https、CA有了较为全面的理解和认识。
3)通过上学期web课程的学习,我们对搭建网站有较强的基础。
4)通过查阅网上资料,有人可以通过openssl实现自制网站的https的实现。(Linux环境下)
5)本组成员有着较高的自学习能力以及查阅资料的水平,我们相信自己能完成好本次课设。
二、详细设计思路
1.gmssl(opesnssl)指令学习的思路
我们小组通过以下方法来学习、掌握gmssl的部分指令
1)阅读书籍:《OpenSSL与网络信息安全》。
2)查阅网上各类相关资料:CSDN、博客园、Openssl官网、国密SSL实验室。
2.网站编写的思路:
网站部署:
1)Python:
安装python:
第一步:下载python以及安装python
第二步:解压:tar xvf Python-3.6.0a1.tar.xz
进入目录:cd Python-3.6.0a1
添加配置:./configure –prefix=/usr/local/python3.6

第三步:编辑安装(切换成root用户执行:sudo -s)
请依次执行以下命令:
make && make install

Python3安装完成

安装uwsgi
第一步:安装pip3 install uwsgi并且进行换源



第二步:测试uwsgi

在同项目名目录中写一个test.py
执行:vim test.py
填写如下内容:
# test.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"]

第三步:执行shell命令:
uwsgi –http :8001 –wsgi-file test.py

第四步:访问网页:
http://127.0.0.1:8001/
网页显示:Hello World

安装nginx

安装Django

创建diango项目
django-admin startproject myweb
Django项目位置为:/home/setup/myweb
输入,将uwsgi和diango连接:uwsgi --http :8000 --chdir /home/setup/myweb --wsgi-file myweb/wsgi.py --master --processes 4 --threads 2 --stats 127.0.0.1:8001

打开网页,发现成功。
在程序目录下创建uwsgi.ini

创建 uwsgi.ini 配置文件
打开创建好的配置文件 uwsgi.ini 添加如下配置
[uwsgi]
http = :8000
chdir = /home/setup/myweb
wsgi-file = myweb/wsgi.py
master = true
processes = 4
threads = 2
stats = 127.0.0.1:8001
运行配置文件,成功

配置ngix
进入/etc/nginx/sites-available 目录下进行配置 default 文件

配置网站部署

失败
发现django路径
重新配置

将templates文件夹移入django下的templates文件夹下,并改路径。

网站部署成功
2)java+eclipse javaee+tomcat
主要思路:
主要框架:java+tomcat+html/css/js做一个静态页面
编辑器:eclipse
思路:首先新建一个web工程,对其进行tomcat配置,确定其tomcat的运行位置。在工程下新建html文件,css文件,js文件,进行界面布局设计,用html文件设计文本布局,css文件进行样式设计,用js文件进行连接和调用,最后实现页面布局后,将其部署到tomcat下,使tomcat打开时,可以用本地局域网进入页面,因实验需要使用https协议,所以需对tomcat进行配置,进入tomcat下conf文件夹,对其server.xml进行修改,关闭其8080端口,开启8443端口,使http协议可以运行。
具体步骤:
对escplise进行tomcat部署
打开Eclipse,单击“Window”菜单,选择下方的“Preferences”,看是否存在“Server”选项


上图中,点击“add”的添加按钮,弹出如下界面:

上图中,选择对应的Tomcat版本,点击next
选择Tomcat的路径,以及JRE(使用工作平台默认的,不用做额外添加修改),点击“完成”,配置完毕。
建立一个web项目
File → New → Dynamic Web Project ,一路next,在该窗口时如图,勾选Gernerate web.xml deployment descriptor ,finish 就ok了

tomcat服务器显示在控制台上,将web应用部署到tomcat中,Window → Show View → Servers如图

点击链接No servers are available. Click ths link to create a new server. ,在弹出的对话框中选择Tomcat版本 ,点击“Next”,添加我们的项目 如图:,点击finish


返回eclipse控制台下方的“Servers”面板,右键单击该面板中的“Tomcat v7.0 Server at localhost”节点,在弹出的快捷菜单中单击“Start”,即可启动指定的Web服务器
任务管理器—关闭tomcat进程—再次打开eclipse-tomcat-解决问题
测试下,建立一个jsp文件放在webcontent目录下



启动tomcat-登陆:http://localhost:8080/webtest/test.jsp

发现正常登陆-即可访问网站
导入写好的网页项目:

网页部署成功(http)
3.实现https的思路:
Windows环境下:

Windows环境下https实现流程图
各个关键技术的解析以及截图
1)首先在openssl的bin目录下建立2个文件夹:ca、server:

2)生成CA证书
第一步:创建私钥
代码:genrsa -out ca/ca.key 1024

第二步:创建证书请求
代码:req -new -out ca/ca-req.csr -key ca/ca.key

第三步:自签署证书

3)生成server证书:
第一步:创建私钥
代码:genrsa -out server/server.key 1024

第二步:创建证书请求:
代码:req -new -out server/server-req.csr -key server/server.key

第三步:自签署证书
代码:x509 -req -in server/server-req.csr -out server/server-cert.crt -signkey server/server.key -CA ca/ca-cert.crt -CAkey ca/ca.key -CAcreateserial -days 3650

第四步:转换证书格式
代码:pkcs12 -export -clcerts -in server/server-cert.crt -inkey server/server.key -out server/server.p12

4)配置tomcat中conf/server文件

黄色部分为增添的Connector

5)把自制网站拷贝到tomcat/webapps/ROOT下

6)在IE浏览器导入证书
第一步:在Internet选项中点击内容找到证书,再在证书中找到受信任的根证书颁发机构,点击导入

第二步:将CA证书导入:

查看证书情况

7)打开tomcat的bin的startup


8)输入https://localhost:8443/发现https顺利实现(加上锁头)

同理火狐浏览器也顺利实现:

Linux下:

Linux环境下https实现流程图
各个关键技术的解析以及截图
1)CA根证书和server证书创建同前面差别不大,这里不再赘述。
这里讲一下后续区别:
2)进入ubuntu虚拟机安装keytools。

建立工作文件夹,将主机server.p12拖入进行操作

将.p12 文件导入到keystore JKS文件 server.keystore
3)配置Tomcat
第一步:将keystore文件(server.keystore) 放在tomcat根目录/conf文件夹下
第二步:修改server.xml配置文件
注释service下所有代码,增加下面代码。注意:协议为“org.apache.coyote.http11.Http11NioProtocol”
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="D:/app/tomcat/conf/server.keystore"
keystorePass="123456"
clientAuth="false" sslEnabledProtocols="TLSv1.2"
ciphers="TLS_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
TLS_RSA_WITH_AES_128_CBC_SHA256,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
TLS_RSA_WITH_3DES_EDE_CBC_SHA,
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA" />

4)后续步骤同前面的方法
5)结果展示:
火狐浏览器:

IE浏览器:

4.结果分析:
1)gmssl指令基本分析成功。
2)自制网站建立成功。
3)openssl实现单向认证(自制证书)成功(两种不同方法)。
4)自制网站https顺利在不同浏览器中实现(两个不同浏览器)。
5)结果与预期相同。但在实践过程中,我们发现,IE浏览器,火狐浏览器是可以直接认证根证书的,而对于edge浏览器,chrome浏览器无法认真根证书,需要使用生成的根证书再次生成子证书进行认证才不会提示不安全连接的信息。
注:具体网站麻烦娄老师看一下我们上传的附件或者后面发的网站链接(有背景音乐和跳转功能)
三、设计特色
1.分别从两种不同环境(Windows10和Linux),两种不同方法来创建证书。
2.从两种不同语言的环境下(python和java)部署网站。
3.证书可以应用于两种不同浏览器(火狐(firework)以及IE浏览器),使得自建网站的https得以实现。
四、源代码及注释(没代码的不用写)
代码较多,具体代码在附件中,麻烦娄老师查收。
五、个人报告
1.20181301刘天宁个人报告博客链接:
https://www.cnblogs.com/tnhappy/p/13945563.html
2.20181304石昊林个人报告博客链接:
https://www.cnblogs.com/shl1304/p/13944001.html
3.20181306宁锦鹏个人报告博客链接:
https://www.cnblogs.com/ningjinpeng/p/13944228.html
浙公网安备 33010602011771号