2020课程设计——个人报告
课程设计项目:基于Gmssl的CA系统构建及应用
姓名:谢绎
学号:20181312
提交日期:2020年11月8日
指导老师:娄嘉鹏
一、个人贡献
-
学习OpenSSL中与CA系统和证书相关的命令,学习Gmssl对国密算法的支持和与OpenSSL的不同
-
撰写OpenSSL中的
dgst
、dh
、dhparam
、enc
命令以及一些摘要算法和对称加算法在dgst
和enc
命令内部的使用说明 -
研究CA系统及其构建的原理,使用OpenSSL的相关命令在Ubuntu环境下搭建自己的CA系统
-
研究HTTPS的原理,学习tomcat的配置方法,用OpenSSL搭建的CA配置tomcat并部署https网站
-
每周进展
二、设计过程中遇到的主要问题及相关解决方法
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://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
2.OpenSSL
3.使用OpenSSL搭建CA
https://blog.csdn.net/weixin_41979048/article/details/80374945
https://blog.csdn.net/u012603457/article/details/97265744
4.HTTPS
《图解HTTP》
《深入浅出HTTPS:从原理到实践》
5.在Tomcat上部署HTTPS网站
https://tomcat.apache.org/tomcat-9.0-doc/ssl-howto.html#SSL_and_Tomcat
6.Linux的一些其他简单命令的学习
https://blog.csdn.net/haijiege/article/details/83752362