zoukankan      html  css  js  c++  java
  • 2020课程设计(基于gmssl的CA系统构建及应用)个人报告——20181211沈芮吉

    一、个人贡献

    1.负责前期第三个作业的任务理解、任务分配、进度安排、资料查询和制作任务理解的博客的制作。

    2.小组分工后,完成自己需要研究的gmssl中的asn1parse、ca、cms,dgst中的gost和enc中的aes-128-cbc、 aes-128-ecb、aes-192-cbc的选项、场景和参数,制作成文档。

    3.多次尝试在自己的虚拟机中搭建CA,分别在virtualbox和VMware两个软件中的虚拟机里制作。使用OpenSSL genrsa生成CA私钥(公钥自动提取,不用生成),生成自签证书,并生成相关文件,在用户主机上生成密钥,保存至应用此证书的配置文件目录下;生成证书签署请求文件;CA签署证书;将接收到的证书放于服务的配置文件目录下,例Tomcat的conf中server.xml。

    4.尝试在Ubuntu虚拟机下搭建所需环境包括Tomcat、jdk和Apache等等,处于虚拟机可执行内存和java运行的考虑,最后小组选择在主机中执行,按照步骤修改添加我所制作的证书,使得在浏览器中能够通过https访问网站。

    5.填写完成小组课程设计报告。

    6.利用html和css制作了index.html、comedy-page*3、romance-page*3和comic-page*3等页面。

     

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

    初次进行解压压缩包,与wins系统不同,Linux无法右键解压,我参考命令行

    unzipGmSSL-master.zip

    这个命令一定要在压缩包所在文件夹中输入,根据所在文件夹的位置,按需进行管理员权限的进入。

     

     

    cdGmssl-master

    ./config--prefix=/usr/local 

    make

    Sudo make install

    我们通常使用gmssl version 来测试gmssl版本,以检验安装是否成功。

    这个时候直接使用命令gmsslversion就会出现错误。

     

     

    参考网上的博文解决方法如下

    ldd/usr/local/bin/gmssl

    sudo-s(进入管理员模式,否则权限不够)

    cplibssl.so.1.1/usr/lib/x86_64-linux-gnu/libssl.so.1.1

    cplibcrypto.so.1.1/usr/lib/x86_64-linux-gnu/libcryptol.so.1.1

    (但是实际上这并不是最优解,无法将OpenSSL和gmssl的库分开,会导致与服务器已安装的openssl冲突,具体表现为输入OpenSSL,实际跳转为gmssl,由于虚拟机后面出现的问题,我并没有第三次安装gmssl)

     

    在安装gmssl后,我发现一台虚拟机突然连不上网,报错网络连接激活失败(如下图所示),起初我以为虚拟机是突然无法手机热点,回到寝室连接WiFi测试仍无法连接,不曾与gmssl联系,打开VMware 使用另一台虚拟机安装gmssl,而后再次打开虚拟机使用过程中发现同样出现此问题。

     

    参照网上给出的参考解决方式:

    此后尝试过重置VMware中虚拟网络编辑器,结果没有得到改善。

    wins+R中输入service.msc,显示该服务正在使用,重启之后也未果。

    后来添加桥连方式也没有成功。

     

    我重新VB和VMware中分别添加新的虚拟机就可连接网络,说明软件本身没有出现问题,目前尚未找到合适的解决办法,避免影响新的虚拟机的使用,并没有第三次安装gmssl。

     

    我在虚拟机中安装Tomcat和jdk、Apache遇到的问题

    在启动tomcat的时候出现了这样错误:

    touch:无法创建'/usr/local/tomcat/apache-tomcat-8.5.59/logs/catalina.out':权限不够
    ./catalina.sh:502:./catalina.sh:cannotcreate/usr/local/tomcat/apache-tomcat-8.5.59/logs/catalina.out:Permissiondenied

    由于是在普通用户下安装tomcat,linux对/usr/lib目录和/usr/local目录进行了严格的权限设置,更改掉就好了。

     

    运行./startup.sh时提示没有权限  

    ./bash:./startup.sh:权限不够解决方法:

    用户没有权限,而导致无法执行,

    用命令chmod修改一下bin目录下的.sh权限就可以了

     chmod +x*.sh

    运行Tomcat时提示没有Java_home

    我就去搜索了如何在Linux下配置java

    方法主要有两个:一个是命令行输入下载,另一个是在官网手动下载,比较推荐手动下载。

    下载安装包之后,tarzxvfjdk-15.0.1_linux-x86_bin.tar.gz解压

    修改环境配置,vim etc/profile

    PS:修改系统文件必须要有管理员权限,提前sudo-s一下,否则就会提示正在修改只读文件)

    Export JAVA_HOME=/usr/local/jdk/jdk-15.0.1

    Expor tCLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/

    Export PATH=$PATH:$JAVA_HOME/bin

     

    source/etc/profile使得修改过后的运行

     

    用命令java-version测试一下安装是否成功

    如图所示即为成功

     

    此时再次运行即为成功

     

    结束运行即,./shutdown.sh

    而后寻找安装。

    注意网络上常见的安装教程都是Tomcat8及以前的版本,最新版本Tomcat9与网络教程中配置文件所在位置并不相同。

     

    我由于之前在为客户颁发key时出现问题,始终没有得到有效的解决,且为避免重复操作导致的文件覆盖前后不对应等等问题,我分别在VMware和virtualbox重新搭建CA的整个过程,两者稍有区别。

    前面步骤相类似。

    但是在使用到命令sudo openssl ca -in /home/regina/ca/users/clients.csr -cert /home/regina/ca/private/ca.crt -keyfile /home/regina/ca/users/client.crt -config “/home/regina/ca/conf/openssl.conf”时,在我的VMware的虚拟机中,关于命令中指令config路径,我三次搭建CA系统时都遇到了,config一定输绝对路径,但是无法选择到index.txt,屡次显示没有该文件。

     

     

     

    总体比较两台虚拟机制作CA的过程,我通过报错提示,发现我们的CA证书申请方和颁发方需要在某些match的地方保持一致,否则就是系统不会同意颁发key。

     

     

    按照最初的设计,我在虚拟机中尝试配置环境中,但是网上的教程中,我们需要安装mod_ssl,yum的命令和仓库,我们因为系统原因实际无法连接。并且在而后步骤中需要修改的conf中的httpd文件,我也无法找到。因而实际只完成了Tomcat的配置和修改server.xml文件,下载Apache。关于yum需要以后增加了解。

     

    从虚拟机中通过压缩命令导出我在虚拟机中CA文件夹,但是第一次压缩过后users文件夹中client.csr和client.crt保存,但是client.key和client.p12并不能存入压缩包中,我sudo之后才能全部存入。 

    在进行https配置的时候,我开始时没有将server.xml中端口8080有关的代码,无论我如何修改代码,8443端口都是无法打开页面,而8080端口能够保持畅通,使用jdk中自带的keytool颁发的签名和证书,实际仍然无法连接。与组长交流情况后,发现需要备注掉8080端口的代码,并且需要将common name改为localhost,而后能够连接。Server.xml修改的代码也需要多次尝试,我在keytool中生成的完全符合原xml文件格式,与实际不符,需要考虑我们自身搭建的CA证书。

    我在证书导入和连接localhost的时候,QQ浏览器和IE浏览器中管理的证书是相同,一方导入两者共用,而Firefox浏览器则需要另导证书。

    此外,在组长的研究下,签名客户证书时需要注意算法,使用sha256能够使得我们的https锁无感叹号,而md5在显示中存在。

     

     

     

     

    最后的效果图

     

     在QQ浏览器和Microsoft edge中需要允许我们添加的证书进行访问,会有不推荐进入的选项提示。

     

    三、设计体会和收获

    在初次接触gmssl和OpenSSL时,对两者十分陌生,加之对Linux系统并不了解,命令不是很熟悉,加上安装时没有区分gmssl和OpenSSL共用的库,应该注意gmssl编译安装过程,避免与服务器已安装的openssl冲突,路径的部署都是需要关注。而后在实验中发现路径的重要性,在安装新的OpenSSL之前需要开始前先卸载老的版本,而后安装在学习gmssl中命令的选项、场景和参数,因为我们之前没有学习过,对于使用并不了解,主要通过网络上的资料进行学习,但是常见的命令可以查询到,有些并不经常使用的命令或者是dgst中选项,缺少资料,只能通过自身的学习达到。在信息安全系统设计与实现的第二次实验中,我更加清楚地理解了OpenSSL和gmssl中使用方式,关于选项的具体使用方式。自学收获的知识要比网络上所获取的更加能够理解消化,也能在后续的学习中发挥。所以起初在第一第二周完成的gmssl解析,在经过一两周之后,进行了大幅度的修改,具体详见https://www.cnblogs.com/regina1st/p/13945867.html

    经过几次试验,我发现我需要养成及时保存快照的习惯,能够有效地保证我的虚拟机在发生无法解决的问题时,也能在最小损失程度上恢复状态。例如安装gmssl后无法联网,即可无需花大把时间进行安装新的虚拟机。

    未经准确了解即不随意操作,安装gmssl造成OpenSSL冲突。

    以做带练使得我们加深对OpenSSL命令和CA的理解,在颁发证书、签名、转换文件格式等等过程中,加深主机和客户端交互过程的理解,增强对命令实际用途的了解,比起先前对命令场景应用的测试,有了更加深刻和切实的学习。在使用Tomcat的过程中,感受Linux的系统和Windows的系统异同之处。

    CA搭建过程中,要注意openssl.conf文件的意义,在后续中对应的系统要求,本身OpenSSL就有conf文件,可以直接使用,但是通过自制可以更加了解证书颁发的内容和要求。VMware和virtualbox虽然都可以安装虚拟机,但是其中除了安装过程的区别,在使用上仍有细微的差别,例如openssl genrsa -out /home/regina/ca/private/ca.key,VMware就能有明显的响应字符,而VB中并没有,但是经过查看已经执行。

     

    四、参考文献和网站

    https://www.linuxidc.com/Linux/2017-10/147349.htm

    https://m.linuxidc.com/Linux/2017-10/147349.htm

    https://blog.csdn.net/qq_41813208/article/details/103086110

    https://blog.csdn.net/hjxdreamer/article/details/103296944

    https://www.cnblogs.com/proper128/p/11181760.html

    https://blog.csdn.net/wangshuminjava/article/details/80483397

    https://blog.csdn.net/cy_cai/article/details/9070459

    http://linux.kutx.cn/linux/linux3911.htm

     

  • 相关阅读:
    Compiler OverView
    二叉查找树
    [C++] manage background threads with boost::thread
    模拟类式继承
    JavaScript Curry
    Get GetProcAddress Function Address
    ASP.MVC Session为null
    ASP.NET MVC项目Forms身份验证HttpContext.Current.User为空
    Java Bean Validation学习笔记
    java开发中sql注入正则表达式检测
  • 原文地址:https://www.cnblogs.com/regina1st/p/13945939.html
Copyright © 2011-2022 走看看