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

 基于gmssl的CA系统的构建及应用    20181217陈少卿

一、贡献

第一周:完成对七条指令的详细解释(详情可见蓝墨云提交的第一周报告!码云链接

第二周:完成自制网页以及阿里云网站搭建(后续种种原因,最后转战本地)网站源码码云托管链接

第三周:①在本地tomcat下面搭建一个自己的网站并实现安装简单证书(采用三条指令进行证书颁发)

               ②http到https的转化(可见蓝墨云第三周报告,码云链接

第四周:1.实现http(80、8080端口)跳转到443端口

               2.编写小组汇编CA系统设计

               3.①自己充当CA机构给自己本地localhost颁发证书、并实现证书的吊销

                  ②小组队员1205和1210分别充当CA机构给自己192.168.43.99颁发证书

                  ③自己充当CA机构给小组队员刘波影、张一凡颁发证书,并实现证书的吊销

                4.编写个人报告

                   ----总流程(eg:给自己的192.168.43.98颁证书)

个人项目链接

 

二.基本原理和实现:

①基本原理

PKI: Public Key Infrastructure

  签证机构:CA (Certificate Authority) 

  注册机构:RA

  证书吊销列表:CRL

获取证书两种方法:

1.使用证书授权机构

   生成签名请求(csr)

    将csr 发送给CA

   从CA 处接收签名

2. 自签名的证书

 自已签发自己
②实现:

1、原理介绍:

我们以A端为CA机构,B端是申请证书的公司

2、A端自签证书,自签证书之前我们要,了解查看配置文件的说明 vim openssl.cnf,会告诉我们怎么自签证书,要求我们创建的东西放在哪些目录下。

3、申请证书时,要填写的必要信息

3、B端证书申请及签署步骤:

① 生成申请请求

② RA 核验

③ CA 签署

④ 获取证书

1、创建所需要的文件(如果不创建,后边操作会出错)

root@LAPTOP-LNFPC4GC:/mnt/e/chen/openssl-1.1.1-pre5/apps/demoCA# touch index.txt 生成证书索引数据库文件

root@LAPTOP-LNFPC4GC:/mnt/e/chen/openssl-1.1.1-pre5/apps/demoCA# echo 99 > serial 指定第一个颁发证书的序列号

2、CA 自签证书

① 生成私钥(输入自己的密码)

root@LAPTOP-LNFPC4GC:/mnt/e/chen/openssl-1.1.1-pre5/apps/demoCA# mkdir private
root@LAPTOP-LNFPC4GC:/mnt/e/chen/openssl-1.1.1-pre5/apps/demoCA# (umask 066; openssl genrsa -out private/cakey.pem -des3 2048)
Generating RSA private key, 2048 bit long modulus (2 primes)
.............+++++
.......................................................................................................................................................................+++++
e is 65537 (0x010001)
Enter pass phrase for private/cakey.pem:
Verifying - Enter pass phrase for private/cakey.pem:

可以加密,也可以不加密,加过密,后边每次都要输入,为了试验方便就不加密了,但加密更安全

tree  可以看到cakey.pem 生成了

 生成自签名证书

root@LAPTOP-LNFPC4GC:/mnt/e/chen/openssl-1.1.1-pre5/apps# openssl req -new -x509 -key ./demoCA/private/cakey.pem -days 7300 -out ./demoCA/cacert.pem

 (req申请、-x509自签名、cacert.pem)

  req:请求申请证书

  -new: 生成新证书签署请求

  -x509: 专用于CA 生成自签证书

  -key: 生成请求时用到的私钥文件

  -days n :证书的有效期限

  -out / PATH/TO/SOMECERTFILE : 生成私钥证书的保存路径

③ 查看

root@LAPTOP-LNFPC4GC:/mnt/e/chen/openssl-1.1.1-pre5/apps/demoCA# cat cacert.pem生成的证书文件

root@LAPTOP-LNFPC4GC:/mnt/e/chen/openssl-1.1.1-pre5/apps/demoCA# openssl x509 -in cacert.pem -noout -text   (-text:生成的证书)

 将证书转化为cert形式

openssl x509 -outform der -in cacert.pem -out cacert.crt

四、B客户端申请证书

1、B 生成私钥

root@LAPTOP-LNFPC4GC:/mnt/e/chen/openssl-1.1.1-pre5/apps# mkdir mimi
root@LAPTOP-LNFPC4GC:/mnt/e/chen/openssl-1.1.1-pre5/apps# cd mimi
root@LAPTOP-LNFPC4GC:/mnt/e/chen/openssl-1.1.1-pre5/apps/mimi# (umask 066;openssl genrsa -out service.key 2048)

Generating RSA private key, 2048 bit long modulus (2 primes)
............+++++
...........................................................................................+++++
e is 65537 (0x010001)

2、利用私钥生成证书请求文件, 在需要使用证书的主机生成证书请求

root@LAPTOP-LNFPC4GC:/mnt/e/chen/openssl-1.1.1-pre5/apps/mimi# openssl req -new -key service.key -days 3650 -out service.csr

五、A端,签署证书

1、为了方便管理,创建一个专门放请求的目录,把请求都放在这个目录下,不是必须的

root@LAPTOP-LNFPC4GC:/mnt/e/chen/openssl-1.1.1-pre5/apps/demoCA# mv ../mimi/service.csr csr

 

2、CA 签署证书,并将证书颁发给请求者

root@LAPTOP-LNFPC4GC:/mnt/e/chen/openssl-1.1.1-pre5/apps# openssl ca -in ./demoCA/csr/service.csr -out ./demoCA/certs/service.crt -da
ys 1000

注意:默认国家,省,公司名称三项必须和CA一致

签署后:会生成更新一些文件

3、查看证书中的信息:

root@LAPTOP-LNFPC4GC:/mnt/e/chen/openssl-1.1.1-pre5/apps/demoCA# openssl x509 -in certs/service.crt -noout -text

openssl ca -status 99 查看指定编号的证书状态

配置tomcat和网页:

root@LAPTOP-LNFPC4GC:/mnt/e/chen/openssl-1.1.1-pre5/apps/demoCA# cd ..
root@LAPTOP-LNFPC4GC:/mnt/e/chen/openssl-1.1.1-pre5/apps# mv demoCA ../

客户端B转化成p12格式:(输入自己的密码)

root@LAPTOP-LNFPC4GC:/mnt/e/chen/openssl-1.1.1-pre5/apps/demoCA# openssl pkcs12 -export -clcerts -in certs/service.crt -inkey ../mimi/service.key -out certs/service.p12
Enter Export Password:
Verifying - Enter Export Password:

导入浏览器

 

 

 

 

效果展示

 

 

 

 

六、吊销证书

1、在客户端(A端)获取要吊销的证书的serial(编号)

root@LAPTOP-LNFPC4GC:/mnt/e/chen/openssl-1.1.1-pre5/apps# openssl x509 -in ./demoCA/certs/service.crt -noout -serial -subject

2、在CA(B端) 上,根据客户提交的serial 与subject 信息,对比检验是否与index.txt 文件中的信息一致,确认就吊销证书:

root@LAPTOP-LNFPC4GC:/mnt/e/chen/openssl-1.1.1-pre5/apps# openssl ca -revoke ./demoCA/newcerts/99.pem

3、指定第一个吊销证书的编号

注意:第一次更新证书吊销列表前,才需要执行

root@LAPTOP-LNFPC4GC:/mnt/e/chen/openssl-1.1.1-pre5/apps# echo 01 > ./demoCA/crlnumber

4、更新证书吊销列表,将来将吊销的列表放到互联网上,让大家知道

root@LAPTOP-LNFPC4GC:/mnt/e/chen/openssl-1.1.1-pre5/apps# openssl ca -gencrl -out ./demoCA/crl/crl.pem

5、查看crl 吊销文件:

root@LAPTOP-LNFPC4GC:/mnt/e/chen/openssl-1.1.1-pre5/apps# openssl crl -in ./demoCA/crl/crl.pem -noout -text

 

 

 

也可以在windows上查看,sz发到windows上,后缀改为.crl

 

 

 

好了,有关CA证书的东西就这些了。

 

三、遇到的困难以及解决问题的方法

①一开始对openssl完全不了解,也不知道应该如何使用它,通过网上不断的查阅资料,逐渐了解,并能熟练地写出小组分配七条指令的相关例子

参考网址:①https://blog.csdn.net/xjhhjx/article/details/81588301?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~sobaiduend~default-3-81588301.nonecase&utm_term=openssl%20%E6%9F%A5%E7%9C%8B%E6%94%AF%E6%8C%81%E7%9A%84%E7%AE%97%E6%B3%95&spm=1000.2123.3001.4430②https://blog.csdn.net/oncealong/article/details/82785447③https://www.cnblogs.com/gordon0918/p/5317701.html④https://www.cnblogs.com/yangxiaolan/p/6256838.html

 

 

 

②不知道如何搭建网站,通过不断查阅资料,知道应该下载tomcat并进行配置(将文件夹放在webapps下面),此时http://localhost:8080/XXX就可以对网站进行访问。

参考网址:https://blog.csdn.net/menofgod/article/details/78283167

eg:

 

 此时访问http://localhost:8080/donggong就可以得到网站

③不知道如何将http怎么变成https.通过上网不断查资料,第一种8443,每次登陆网站时,都要写上8443端口。第二种443,每次登陆网站,可以省略端口。

方法:自己制作一个证书,将证书格式转化为p12格式,并将证书的p12格式所在位置添加到tomcat下的server.xml中的 keystoreFile中,并将keystorefile改为pkcs12。

举例:(改成443)

参考网页版:https://zhidao.baidu.com/question/268640171635657085.html

https://jingyan.baidu.com/article/2d5afd6933a07b85a2e28e9d.html

 

④不知道如何将http直接跳转为https。上网不断查询资料,可以知道很简单,只需修改server.xml以及web.xml。

eg:

server.xml

 

web.xml

 

⑤不知道如何颁发证书,如何吊销证书,如何查看证书序列号、如何给自己和其他人颁发证书。

参考网址:https://deepzz.com/post/based-on-openssl-privateCA-issuer-cert.html

https://www.cnblogs.com/along21/p/7595912.html

⑥不知道怎么装gmssl,本来想安装gmssl,但是说要与openssl交叉编译,会造成openssl某些功能的缺失和崩溃,于是果断选择放弃了。但其实gmssl是openssl一个小分支,用openssl也是一样的 。

⑦手机访问tomcat的localhost页面时,显示访问不了。解决方法:开防火墙。

四.设计体会与收获:

在这个过程中收获了很多,从openssl简单的几条命令入手,到后来的在本地tomcat上面搭建网站,再到学习给网站颁发证书,一步一个脚印。一开始,只会简单的颁发证书(三步走),并没有实现吊销证书,更新证书序列号等等。再到后来参考其他文献,了解应该根据openssl.cnf,找到正确的路径,再进行证书的颁发。这时候任何小地方的失误,都可能源于路径的选择错误,需要到正确的路径下执行正确的命令。我觉得最为重要的是,小组合作发挥了绝对优势,大家一起取长补短,共同进步,互相充当对方的CA,分别给另外两人颁发证书,并在自己的电脑上验证证书的正确性(导入tomcat和ie浏览器进行观察),结果无一例外的证明均成功了。

posted @ 2020-11-07 20:58  20181217Cindy  阅读(278)  评论(0编辑  收藏  举报