• 基于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浏览器进行观察),结果无一例外的证明均成功了。

  • 相关阅读:
    201116西瓜书机器学习系列---2、模型评估
    201116西瓜书机器学习系列---1、绪论
    js中null和undefined的区别
    ajax和pjax有什么区别
    html5中的web存储
    Java调用linux命令及Shell脚本
    plsql developer中,清除登录历史
    PLSQL自动登录,记住用户名密码&日常使用技巧
    Linux中查看进程状态信息
    Is there any difference between GROUP BY and DISTINCT
  • 原文地址:https://www.cnblogs.com/cindy123456/p/13942350.html
Copyright © 2020-2023  润新知