2020课程设计——个人报告

2020课程设计——个人报告

课程设计项目:基于Gmssl的CA系统构建及应用

姓名:谢绎

学号:20181312

提交日期:2020年11月8日

指导老师:娄嘉鹏

一、个人贡献

二、设计过程中遇到的主要问题及相关解决方法

1.安装GmSSL

我通过https://codeload.github.com/guanzhi/GmSSL/zip/master下载了GmSSL-master.zip,并将其copy进Ubuntu虚拟机的主目录下。

使用unzip GmSSL-master.zip将其解压缩

cd GmSSL-master进入文件夹

依照资料中指示

输入./config出现了报错

目前遇到的这个问题还没有解决,我寻找了很多资料,没有提This system is not supported的解决方案。

2.搭建CA时,有时即使在命令前输入了sudo提升权限,仍然会报错

如在为CA的key设置起始序列号时,输入sudo echo nice > serial

会出现提示bash: serial 权限不够

我通过查阅资料发现是因为没有获得最高权限,于是通过输入

sudo su进入root模式,此时获得了系统的最高权限

不会再出现权限不够这样的报错了

3.生成的CA目录之后,无法将全部的文件移动,如关键的.key和.crt文件无法被移动

我开启了虚拟机与主机的双向拖放功能,但是当我将CA文件夹从虚拟机拖到主机后却发现,主机中的CA文件夹中少了许多关键内容,如ca.key、ca.crt文件,后来经过思考,使用了zip -r ./ca.zip ./ca命令将CA目录做成压缩包,即可将CA的全部内容移动至Windows环境

三、调试过程中遇到的主要问题及相关解决方法

1.tomcat闪退

初次配置tomcat时,根据网上的博客直接修改server.xml文件的内容,出现了启动tomcat时闪退的现象,后来参考了tomcat的官方文档https://tomcat.apache.org/tomcat-9.0-doc/ssl-howto.html#SSL_and_Tomcat去修改server.xml文件解决了配置不正确闪退的问题

2.localhost:8443使用了无效的安全证书

首次搭建完自己的CA后,我按照以上步骤配置导入,访问网站时出现了这样的问题

这个时候我查看了证书的内容发现

client.crt使用的签名算法是MD5算法,显然已经不安全了

于是我在配置CA的步骤中找到用根证书私钥为客户端证书签名那一步

openssl ca -in users/client.csr -cert private/ca.crt -keyfile private/ca.key -out users/client.crt -config "/home/xieyi/ca/conf/openssl.conf"

查阅了OpenSSL的ca命令参数后,我对其进行了修改

openssl ca -md sha256 -in users/client.csr -cert private/ca.crt -keyfile private/ca.key -out users/client.crt -config "/home/xieyi/ca/conf/openssl.conf"

新一次的签名我使用了sha256算法

后来我在ca/conf/openssl.conf中发现了问题,这里面的默认签名算法default_md的值就是md5,于是我便将其修改为sha256

3.此服务器无法证明它是 localhost

在Chrome下访问https://localhost:8443/hello/login.html时出现了

在Edge下访问https://localhost:8443/hello/login.html时出现了

两者的报错都差不多是:此服务器无法证明它是 localhost,它的安全证书不指定使用者可选名称。

我去查阅了很多资料

https://blog.csdn.net/a735131232/article/details/80526859?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~baidu_landing_v2~default-3-80526859.nonecase&utm_term=它的安全证书不指定使用者可选名称&spm=1000.2123.3001.4430

https://my.oschina.net/jsan/blog/643653

但是非常遗憾最终没能解决这一问题

四、设计体会及收获

通过这一次的课程设计的学习,我有了如下收获:

  • 基本学会了如何使用OpenSSL和Gmssl这两个强大的工具
  • 深入理解了HTTPS的工作原理和实现方式
  • 对密码学在网络通讯过程中的作用有了更深入的了解
  • 加深了对CA在验证身份过程中所起作用的理解
  • 再一次学习了如何进行团队合作、如何与队友进行有效的沟通
  • 再一次学习了一些之前没学到的Linux命令行操作,对“Linux皆文件”的理解更加深刻了
  • 学会了如何在本地服务器Tomcat上部署HTTP和HTTPS网站

五、参考资料

1.GmSSL

https://www.jianshu.com/p/51cb8ff49ce7

https://blog.csdn.net/nuaa_llf/article/details/83023990

http://gmssl.org/docs/quickstart.html

https://github.com/guanzhi/GmSSL

https://gmssl.cn/gmssl/index.jsp

https://www.oschina.net/p/GmSSL?hmsr=aladdin1e1

2.OpenSSL

https://blog.csdn.net/liao20081228/article/details/77159039

https://blog.csdn.net/as3luyuan123

3.使用OpenSSL搭建CA

https://blog.csdn.net/weixin_41979048/article/details/80374945

https://blog.csdn.net/u012603457/article/details/97265744

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

https://blog.csdn.net/likeyoutoo/article/details/49358809

4.HTTPS

《图解HTTP》

《深入浅出HTTPS:从原理到实践》

https://blog.csdn.net/iispring/article/details/51615631

https://www.jianshu.com/p/4764825fb916

5.在Tomcat上部署HTTPS网站

https://tomcat.apache.org/tomcat-9.0-doc/ssl-howto.html#SSL_and_Tomcat

https://blog.csdn.net/a1010256340/article/details/82871175

https://www.cnblogs.com/yaowen/p/9234173.html

6.Linux的一些其他简单命令的学习

https://blog.csdn.net/haijiege/article/details/83752362

https://zhidao.baidu.com/question/210217197.html

https://www.linuxprobe.com/delete-directory-linux.html

posted @ 2020-11-08 22:14  临渊履冰  阅读(110)  评论(0编辑  收藏  举报