基于gmssl的CA系统构建及应用-个人报告

Posted shihaolin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于gmssl的CA系统构建及应用-个人报告相关的知识,希望对你有一定的参考价值。

 

 

 

北京电子科技学院

《信息安全工程技术应用》课程设计报告

基于gmssl的CA系统构建及应用

 

 

  

 

 

小组成员姓名:20181301 刘天宁

                         20181304 石昊林

                         20181306 宁锦鹏

指导教师:娄嘉鹏

  

提交时间:2020118  

 

 

 

 

 

个人报告

20181304石昊林

 

一、个人工作

1.负责部分gmssl指令的解释:gendh、gendsa、genpkey、sripemd160、camellia-256-cbc、camellia-256-ecb、cast。

2.使用eclipse开发Javaweb项目并配置tomcat,构建出http网站。

3.使用openssl命令构建CA证书、客户端证书、服务器证书,导入浏览器。

4.实现tomcat单项认证的配置,使http网站变为安全的https网站。

二、设计与调试过程中遇到的问题及解决办法

1.第一周完成了对于指令的研究。刚开始的时候,我不明白openssl是什么、怎么用,对于指令的研究也只停留在表面,实际应用很困难。

经过网上学习以及对老师ppt的研究,我对openssl有了大致的理解。Openssl整个软件包大概可以分成三个主要的功能部分:SSL协议库、应用程序以及密码算法库。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。作为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。

Openssl命令可以分为3部分:标准命令(例如我研究的gendh、gendsa、genpkey)、消息摘要命令(即sha1命令,sripemd160是其中一部分)、密码命令(包括多种密码的使用,核心是enc命令。我只研究了camellia-256-cbc、camellia-256-ecb、cast)。

2.第二周实现了使用openssl命令创建证书并在浏览器中导入证书。

之前打算下载gmssl的安装包,使用gmssl命令实现证书的创建,但遇到了困难。在按照教程对gmssl进行编译和安装时,直接搞崩了虚拟机……通过分析和查找,我们小组发现了问题所在:gmssl以动态库的形式进行编译时,同时会生成openssl.so的动态库文件;该生成的openssl.so会与系统自己的openssl.so动态库产生冲突。openssl.so是操作系统所依赖的重要库文件,包括联网等活动都会受其影响,这次安装约等于将整个系统整崩溃……解决办法是:后来我选择在windows环境下直接用openssl工具进行编译,实现了证书的创建。

这里附openssl(64位安装包)下载地址:https://slproweb.com/products/Win32OpenSSL.html

附证书截图:

 

 

 

 

 

3.第三周实现了web工程在eclipse的配置,以及实现tomcat单项认证的配置。

在这个过程中遇到的问题是本地tomcat服务器与eclipse集成的tomcat服务器同时开启时会报错,二者端口产生冲突,显示端口被占用,这个问题困扰了我很久。解决办法是将本地tomcat服务器关掉,将eclipse集成的tomcat服务器开启,web网站可以正常配置。如下图:

 

 

 

 

 

在配置tomcat时遇到了比较大的困难。网上五花八门的方法更改server.xml文件,大多不适合我们的证书,多次尝试后,我找到了tomcat官网Apache tomcat 9有关ssl的配置讲解,然后按照专业的方法更改server.xml文件,重启tomcat后在火狐浏览器和IE浏览器成功访问到我们的https网页。如下图:

 

 

 

 

三、设计体会及收获

1.选到这个课题的时候,是想在一个陌生的领域学到一些东西,所以一开始进行研究的时候遇到了很多困难,并且很多问题是网上查不到、需要我们自己更加深入研究openssl的原理去解决的。

通过刚开始一周的学习,我了解到openssl是在linux、unix、windows、mac等多种平台用于建立SSL协议的产品实现。SSL协议和TLS协议是将http网站构建成可以进行加密传输的https网站的必需品。通过对openssl指令的学习,我对我们的课题怎样去进行有了一个大致的了解。

2.将http网站变成https网站(即上锁)另一个必须要用的东西就是数字证书,它可以通过openssl的指令来实现。我实现的是https单项认证,单向认证SSL协议不需要客户端拥有CA证书,去掉了服务器端验证客户证书的过程。单项认证在协商对称密码方案、对称通话密钥时,服务器发送给客户的是没有加过密的(这并不影响 SSL 过程的安全性)密码方案。这样,双方具体的通讯内容,就是加过密的数据,如果有第三方攻击,获得的只是加密的数据,第三方要获得有用的信息,就需要对加密的数据进行解密,这时候的安全就依赖于密码方案的安全。一般的web应用都是采用SSL单项认证,因为拥护数目太多了,并且不需要在通讯层对用户身份进行验证,一般都在应用逻辑层来保证用户的合法登入。

再建立数字证书时,我们先从理论方面了解到证书需要什么,然后通过命令将密钥、证书具体信息、有效期等设置完成,然后进行自签名并使用根证书签名。

3.通过课设我对tomcat的配置及使用有了更深的了解。当一个动态网页编写完成后是不能直接被别人通过浏览器访问的,要想访问此动态网页就必须让浏览器通过一段程序来访问此网页,这段程序就是服务器。它用来接受浏览器请求,进行处理然后返回结果。Tomcat就是一个服务器,我们要配置https网站就需要更改conf目录下的server.xml文件,并且在访问自己的https网站前,要点bin目录下的执行文件startup.bat将tomcat打开,这样才能成功访问。

四、参考资料

http://tomcat.apache.org/tomcat-9.0-doc/ssl-howto.html

https://www.cnblogs.com/poziiey/p/12491214.html

https://blog.csdn.net/zs20082012/article/details/79138204

以上是关于基于gmssl的CA系统构建及应用-个人报告的主要内容,如果未能解决你的问题,请参考以下文章

行业知识图谱的构建及应用

区块链系统之《基于区块链的PKI数字证书系统》

区块链系统之《基于区块链的PKI数字证书系统》

构建LAMP平台及应用系统

基于ejbca community 6.3.1.1构建独立ca系统管理数字证书

gmssl国密证书生成方式:国密多级ca证书,国密加密证书,国密签名证书