第一周課程設計任務完成進度
- 本周計劃完成的任務
- 本周實際完成情況(代碼,文檔,程序運行截圖...),未完成計劃的原因?如何改進?
- 本周遇到的問題與解決過程(要詳細)
本周計劃完成的任務
- 完成項目的碼云倉庫搭建,邀請成員進入項目
- 作為組長,我需要確定小組成員的分工,包括:
- 基于什么語言?
- 這周需要做的準備工作——搭建環境?比如java要在OpenEuler里配置jdk……
- 這周需要調通和掌握哪幾個庫?先找資料、參考博客,然后實操
- 本周我自己需要完成一到兩個C語言庫的調通
本周實際完成情況
- 第一項任務:“完成項目的碼云倉庫搭建,邀請成員進入項目”已順利完成,項目鏈接:
所有成員均已加入
- 第二項任務:“作為組長,我需要確定小組成員的分工”,已順利完成。


3. 第三項任務:“本周我自己需要完成一到兩個C語言庫的調通”
我完成了GMSSL國密算法庫的下載和使用。
首先查閱了與GMSSL有關的介紹

GmSSL是一個開源的密碼工具箱,支持
SM2/SM3/SM4/SM9/ZUC等國密(國家商用密碼)算法、SM2國密數字證書及基于SM2證書的SSL/TLS安全通信協議,支持國密硬件密碼設備,提供符合國密規范的編程接口與命令行工具,可以用于構建PKI/CA、安全通信、數據加密等符合國密標準的安全應用。
GmSSL項目是OpenSSL項目的分支,并與OpenSSL保持接口兼容。因此GmSSL可以替代應用中的OpenSSL組件,并使應用自動具備基于國密的安全能力。GmSSL項目采用對商業應用友好的類BSD開源許可證,開源且可以用于閉源的商業應用。
引用自http://gmssl.org/
安裝gmssl和配置路徑
參考博客:在Linux下安裝GmSSL
https://blog.csdn.net/zyhse/article/details/112350363
1. 下載GmSSL源碼:https://github.com/guanzhi/GmSSL

2. 解壓并進入目錄
解壓文件:unzip GmSSL-master.zip
進入目錄:cd GmSSL-master/
3. 編譯
配置安裝路徑,編譯為靜態庫
./config --prefix=/usr/local/gmssl --openssldir=/usr/local/gmssl no-shared
注:–prefix表示安裝路徑;no-shared 表示只編譯靜態庫;默認生成64位庫。
4. 安裝
make install
GmSSL安裝目錄如下:

5. 配置環境變量
在~/.bashrc文件中,添加GmSSL命令行工具路徑。
vim ~/.bashrc
在文件末尾追加如下內容:
export PATH=$PATH:/usr/local/gmssl/bin
然后執行
source ~/.bashrc
輸入命令,查看GmSSL版本
gmssl version -a
6. 查看版本——安裝成功

測試gmssl功能
sm4測試



sm3測試


sm2測試
準備工作:創建一些文件夾用于存放簽名證書

生成SM2密鑰對
gmssl sm2 -genkey -out private/cakey.pem
生成SM2自簽證書,作為CA根證書
gmssl req -new -x509 -key private/cakey.pem -out cacert.crt
生成根證書需要填入一些信息 ,根證書的這三類信息一定要記住,因為之后該根證書可以簽名的證書的該三類信息必須一樣,不然之后申請產生的證書為空。
- Country Name
- State or Province Name
- Organization Name

生成密鑰、證書請求、證書
cd..
gmssl sm2 -genkey -out testUser.com.key
//一樣需要輸入一個 密鑰文件使用的驗證口令
生成證書請求CSR
gmssl req -new -key testUser.com.key -out testUser.com.csr
/*證書請求需要輸入信息,一下三類信息必須和根證書一樣哦
·Country Name
·State or Province Name
·Organization Name
*/
證書生成
gmssl ca -in testUser.com.csr -out testUser.com.crt -cert demoCA/cacert.crt -keyfile demoCA/private/cakey.pem

驗簽
gmssl verify -verbose -x509_strict -CAfile demoCA/cacert.crt testUser.com.crt
本周遇到的問題與解決過程
安裝gmssl時編譯安裝出錯
解決方法


根據這個操作以后就順利完成了make步驟
sm4解密出現亂碼

解決方法
其實是我的密鑰兩次輸入不匹配導致的,其實加密模式(編譯方式)不一樣也會導致這個問題。
gmssl與openssl的沖突問題
GmSSL是支持國密算法和標準的OpenSSL分支,也就是說GmSSL是在OpenSSL代碼基礎上添加的國密算法。
因此為了兼容OpenSSL,GmSSL編譯后生成的so文件名稱與OpenSSL一致,都是libcrypto.so。
可能存在的問題:
Linux上很多軟件都依賴于系統中的OpenSSL庫。若你編譯安裝的GmSSL版本,其基于的OpenSSL分支版本,與系統中的OpenSSL版本不一致,便會產生沖突,很容易導致這些軟件不可用。
最簡單有效的辦法:將GmSSL編譯為靜態庫。
GmSSL命令行工具,以及我們基于該靜態庫開發的程序,直接內部就集成了GmSSL的二進制碼,不需要去查找庫了,也就不會與系統中OpenSSL產生沖突。
在安裝GmSSL時,安裝到指定的目錄下,如/usr/local/gmssl,與系統中OpenSSL路徑保持獨立。
這樣,即從文件路徑和運行時,兩方面保證了GmSSL與OpenSSL不會沖突,并保持使用上的相互獨立性。這的確是最完美的解決辦法。
參考鏈接
posted on 2022-11-15 00:09 20201321周慧琳 閱讀(100) 評論(0) 收藏 舉報
浙公網安備 33010602011771號