1、GmSSL安裝包官方下載下傳
參考官方網站:http://gmssl.org/docs/quickstart.html
點選Downloads即可進行安裝包下載下傳。
2、關于GmSSL
參考官網:http://gmssl.org/
3、在Ubuntu18.04上進行交叉編譯
3.1 下載下傳源代碼(zip),解壓縮至目前工作目錄
$ unzip GmSSL-master.zip
3.2 編譯與安裝
./Configure --prefix=/opt/openssl --cross-compile-prefix=arm-linux-gnueabihf- no-asm shared linux-armv4
make
make install
/opt/openssl 是編譯後的輸出目錄,也可依據需求進行更換。
因為是arm裝置,這裡配置目标平台為linux-armv4,其它平台編譯方式相似,使用 ./Configure --help 能夠顯示支援的所有平台。此外,當指定arm平台時,Makefile中不會出現不支援的m64選項,也就無需删除。
3.3 移植到ARM平台
1、将交叉編譯後的整個openssl檔案夾拷貝至荔枝派環境下,将openssl/bin目錄下的gmssl拷貝到/bin目錄下。
cd openssl/bin
cp gmssl /bin
2、或者将openssl目錄的libcrypto.so.1.1、libssl.so.1.1(其它版本類似),以及apps目錄下的gmssl、openssl.cnf 拷貝到目标裝置,将gmssl放在/bin 目錄,将openssl.cnf放在/opt/openssl/ssl 目錄(沒有相應目錄就用指令mkdir建立)。
mv gmssl /bin
cd /opt
mkdir openssl
cd openssl
mkdir ssl
mv openssl.cnf /opt/openssl/ssl/
3、接着驗證是否安裝成功,檢視版本号:
gmssl version
如果出現error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory.這是由于openssl庫的位置不正确造成的。
在root使用者下執行:
ln -s /opt/openssl/lib/libssl.so.1.1 /usr/lib/libssl.so.1.1
ln -s /opt/openssl/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.1
再次測試版本号,應該就可以了。
3.4 常用加密算法
1、SM4加密與解密檔案
加密:
$ gmssl sms4 -e -in <yourfile> -out <yourfile>.sms4
# 例如:gmssl sms4 -e -in test.c -out test.sms4
輸入正确,就會提示設定密碼:
enter sms4-cbc encryption password: <your-password>
Verifying - enter sms4-cbc encryption password: <your-password>
解密:
$ gmssl sms4 -d -in test.sms4
enter sms4-cbc decryption password: <your-password>
2、生成SM3摘要
$ gmssl sm3 <yourfile>
SM3(yourfile)= 66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0
3、生成SM2密鑰并簽名
$ gmssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:sm2p256v1 \
-out signkey.pem
$ gmssl pkeyutl -sign -pkeyopt ec_scheme:sm2 -inkey signkey.pem \
-in <yourfile> -out <yourfile>.sig
可以将公鑰從signkey.pem中導出并發釋出給驗證簽名的一方
$ gmssl pkey -pubout -in signkey.pem -out vrfykey.pem
$ gmssl pkeyutl -verify -pkeyopt ec_scheme:sm2 -pubin -inkey vrfykey.pem \
-in <yourfile> -sigfile <yourfile>.sig
4、生成SM2私鑰及證書請求
$ gmssl ecparam -genkey -name sm2p256v1 -text -out user.key
$ gmssl req -new -key user.key -out user.req
檢視證書請求内容:
$ gmssl req -in user.req -noout -text -subject