国密gmssl安装,签名验签,证书生成撤销功能汇总

本文详细介绍了如何安装GmSSL,包括编译、安装步骤,以及如何使用GmSSL进行SM4加密解密、SM3摘要、SM2签名验签等操作,还涵盖了证书生成、吊销功能和CRL文件的生成与验证。
摘要由CSDN通过智能技术生成

一、下载GmSSL源码

git clone   https://github.com/guanzhi/GmSSL/archive/master.zip

解压缩至当前工作目录,这个是主分支代码

$ unzip GmSSL-master.zip

二、编译与安装

$ mkdir build

$ cd build

$ cmake ..

$ make

$ make test

$ sudo make install

安装之后可以执行gmssl命令行工具检查是否成功:

$ gmssl version

GmSSL 3.1.2 Dev

三、命令行使用

SM4加密解密

$ KEY=11223344556677881122334455667788

$ IV=11223344556677881122334455667788

$ echo hello | gmssl sm4 -cbc -encrypt -key $KEY -iv $IV -out sm4.cbc

$ gmssl sm4 -cbc -decrypt -key $KEY -iv $IV -in sm4.cbc

$ echo hello | gmssl sm4 -ctr -encrypt -key $KEY -iv $IV -out sm4.ctr

$ gmssl sm4 -ctr -decrypt -key $KEY -iv $IV -in sm4.ctr

SM3摘要

$ echo -n abc | gmssl sm3

$ gmssl sm2keygen -pass 1234 -out sm2.pem -pubout sm2pub.pem

$ echo -n abc | gmssl sm3 -pubkey sm2pub.pem -id 1234567812345678

$ echo -n abc | gmssl sm3hmac -key 11223344556677881122334455667788

SM2签名和验签

$ gmssl sm2keygen -pass 1234 -out sm2.pem -pubout sm2pub.pem

$ echo hello | gmssl sm2sign -key sm2.pem -pass 1234 -out sm2.sig #-id 1234567812345678

$ echo hello | gmssl sm2verify -pubkey sm2pub.pem -sig sm2.sig -id 1234567812345678

$ echo hello | gmssl sm2encrypt -pubkey sm2pub.pem -out sm2.der

$ gmssl sm2decrypt -key sm2.pem -pass 1234 -in sm2.der

SM2加密和解密

$ gmssl sm2keygen -pass 1234 -out sm2.pem -pubout sm2pub.pem

$ echo hello | gmssl sm2encrypt -pubkey sm2pub.pem -out sm2.der

$ gmssl sm2decrypt -key sm2.pem -pass 1234 -in sm2.der

生成SM2根证书rootcakey.pemCA证书cakey.pem

$ gmssl sm2keygen -pass 1234 -out rootcakey.pem

$ gmssl certgen -C CN -ST Beijing -L Haidian -O PKU -OU CS -CN ROOTCA -days 3650 -key rootcakey.pem -pass 1234 -out rootcacert.pem -key_usage keyCertSign -key_usage cRLSign

$ gmssl certparse -in rootcacert.pem

$ gmssl sm2keygen -pass 1234 -out cakey.pem

$ gmssl reqgen -C CN -ST Beijing -L Haidian -O PKU -OU CS -CN "Sub CA" -days 3650 -key cakey.pem -pass 1234 -out careq.pem

$ gmssl reqsign -in careq.pem -days 365 -key_usage keyCertSign -path_len_constraint 0 -cacert rootcacert.pem -key rootcakey.pem -pass 1234 -out cacert.pem

使用CA证书签发签名证书和加密证书

$ gmssl sm2keygen -pass 1234 -out signkey.pem

$ gmssl reqgen -C CN -ST Beijing -L Haidian -O PKU -OU CS -CN localhost -days 365 -key signkey.pem -pass 1234 -out signreq.pem

$ gmssl reqsign -in signreq.pem -days 365 -key_usage digitalSignature -cacert cacert.pem -key cakey.pem -pass 1234 -out signcert.pem

$ gmssl sm2keygen -pass 1234 -out enckey.pem

$ gmssl reqgen -C CN -ST Beijing -L Haidian -O PKU -OU CS -CN localhost -days 365 -key enckey.pem -pass 1234 -out encreq.pem

$ gmssl reqsign -in encreq.pem -days 365 -key_usage keyEncipherment -cacert cacert.pem -key cakey.pem -pass 1234 -out enccert.pem

将签名证书和ca证书合并为服务端证书certs.pem,并验证

$ cat signcert.pem > certs.pem

$ cat cacert.pem >> certs.pem

$ gmssl certverify -in certs.pem -cacert rootcacert.pem

查看证书内容

$ gmssl certparse -in cacert.pem

生成CRL文件

吊销证书,生成吊销信息文件

gmssl certrevoke -in signcert.pem -reason keyCompromise -invalid_date 20240325120000Z  -out revoke_cert.der

常用吊销证书原因,最后有说明。

生成crl文件

gmssl crlgen -in revoke_cert.der -cacert cacert.pem -key cakey.pem -pass 1234 -out a.der

EXAMPLE:

gmssl crlgen -in revoke_cert.der -cacert cacert.pem -key cakey.pem -pass 1234 -next_update 20240325120000Z -out test_guoqi_crl.der

验证crl文件

gmssl crlverify -in a.der -cacert cacert.pem

解析crl文件

gmssl crlparse -in a.der

解析revoke_cert.der

openssl asn1parse -in revoke_cert.der -inform DER

指定吊销证书的原因,常用的有以下情况:

  1. unspecified(未指定):
    • 没有提供具体的吊销原因。
  2. keyCompromise(密钥泄露):
    • 证书的私钥已经泄露或可能已被未经授权的第三方获取。
  3. CACompromiseCA泄露):
    • 签发证书的认证机构(CA)的私钥已经泄露,可能导致证书被篡改或错误签发。
  4. affiliationChanged(隶属关系改变):
    • 证书持有者的隶属关系或组织状态已经发生改变,证书不再适用。
  5. superseded(被取代):
    • 证书已经被一个新的证书取代,新证书具有更新的信息或更长的有效期。
  6. cessationOfOperation(停止运营):
    • 证书持有者已经停止运营或不再使用此证书。
  7. certificateHold(证书暂停):
    • 证书被暂停使用,通常是由于需要进一步审核或由于某种特定原因。
  8. removeFromCRL(从CRL中移除):
    • 这是一个特殊情况,表示之前的吊销通知被错误地发布,现在需要从CRL中移除该吊销条目。
  9. privilegeWithdrawn(权限撤销):
    • 证书持有者的某些权限或特权已经被撤销,证书不再有效。
  10. aACompromise(属性授权泄露):
    • 与证书关联的属性授权机构(AA)的私钥已经泄露,可能导致证书的属性信息被篡改。
  • 53
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值