基于gmssl的CA系统构建及应用20181334张怡杰个人报告
课程设计:基于gmssl的CA系统构建及应用个人报告
一、贡献
搭建CA系统、向CA系统申请证书、CA系统签署证书、吊销证书。编写网页后端、用生成的证书给网页加锁。
二、设计中遇到的问题及解决方法
1.tomcat配置问题
为了打开8443端口,修改了tomcat的server.xml文件。在修改后tomcat打不开了,查看日志发现一堆错。
查找资料并修改回去server文件还是不行,所以直接重装了tomcat。但是出现了新的错。
可以看到错误原因是初始化组件失败、不可用的ARP/本机库。
我的tomcat是和jdk13配置的,查找很多资料,发现是缺少了一个重要配置文件tcnative-1.dll
并把文件放到到jdk的bin目录中,这样,tomcat终于能用了,可以打开8443端口,看到tomcat网页了。
2.Windows下openssl error in req
在使用windows中的openssl中报了错:
2604:error:08064066:object identifier routines:OBJ_create:oid exists:crypto\objects\obj_dat.c:698: error in req
没明白什么问题,但是重新打开openssl这个问题就消失了。
三、调试过程中遇到的主要问题及解决方法
1.使用生成的证书加锁https时出现证书不受信任
肯定是证书的问题。首先我将证书导入浏览器的受信任区
但还是不行,后面反应过来我使用的是自签名证书,于是将CA证书导入受信任的根证书颁发机构,子证书导入受信任发布者。
但还是不安全。
查看错误报告是:NET::ERR_CERT_COMMON_NAME_INVALID
由于Chrome 58 及以上版本只会使用 subjectAlternativeName 扩展程序(而不是 commonName)来匹配域名和网站证书。
修改openssl.cnf文件如下,来添加使用者备用名称(DNS)
确保req下存在以下2行(默认第一行是有的,第2行被注释了)
[ req ]
distinguished_name = req_distinguished_name
req_extensions = v3_req
确保req_distinguished_name下没有 0.xxx 的标签,有的话把0.xxx的0. 去掉
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = CN
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = ShangHai
localityName = Locality Name (eg, city)
localityName_default = ShangHai
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = Domain Control Validated
commonName = Internet Widgits Ltd
commonName_max = 64
新增最后一行内容 subjectAltName = @alt_names(前2行默认存在)
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
新增 alt_names,注意括号前后的空格,DNS.x 的数量可以自己加
[ alt_names ]
DNS.1 = abc.example.com
DNS.2 = dfe.example.org
DNS.3 = ex.abcexpale.net
DNS.4 = localhost
修改后重新生成证书就可以了。
以上分别是在Google、edge、IE、firefox的截图
四、设计体会及收获
其实刚开始做实验是很懵的,现在回头看其实没有做很多的步骤,大部分都是和bug做斗争,也走了不少弯路。
刚开始是用的是linux虚拟机做证书的,后来才发现不能将证书配置到网站上,正好之前windows上有tomcat,就在windows重新做了。
这次课程设计对于openssl命令有了很深的理解,学会了自己做CA系统以及证书颁发吊销,增强了思考能力、动手能力以及解决问题能力。
遇到困难不要害怕,有时候bug太多心态爆炸,实际上可能只是因为操作不细致或者打错导致的问题。
这次实验还有组员和组长的帮助,一起讨论问题解决问题,增强了团队信心以及团结力。