提醒

您正在访问搜索引擎投递页面,强烈建议您:回到主站 查看原文 - GmSSL 国密MS2/SM3/SM4/SM9/ZUC/SSL密码工具箱

memo 编辑 最后修改时间 2023/07/26 18:18

GmSSL 国密MS2/SM3/SM4/SM9/ZUC/SSL密码工具箱

GmSSL 国密MS2/SM3/SM4/SM9/ZUC/SSL密码工具箱
快速上手
OpenSSL 1.1.1 新特性: 全面支持国密SM2/SM3/SM4加密算法

编译与安装

http://gmssl.org/docs/install.html

cd ~
git clone git@github.com:guanzhi/GmSSL.git
cd GmSSL
# 建议指定编译目录
./config --prefix=/usr/local/gmssl --openssldir=/usr/local/gmssl/ssl
make
sudo make install
sudo ln -s /usr/local/gmssl/bin/gmssl /usr/local/bin/

# 检查是否安装成功
/usr/local/gmssl/bin/gmssl version
GmSSL 2.5.4 - OpenSSL 1.1.0d  19 Jun 2019

使用GmSSL命令

# 方式一
# 测试 使用 SM3 计算字符串 'abc' 的哈希值
# -n 表示不输入回车符,这样才能得到正确的结果
echo -n abc | openssl sm3
(stdin)= 66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0

# 方式二
gmssl
GmSSL> sm3  # 选择加密方式,输出要加密的字符串. 不要输入回车,然后按3次ctrl+d。
abc(stdin)= 66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0  # 密文

生成SM2私钥

# 使用 openssl 生成sm2私钥
openssl ecparam -genkey -name SM2 -out priv.key
# 使用 gmssl 生成sm2私钥 
gmssl sm2 -genkey -sms4 -out sm2.pem

#查看私钥内容。priv 就是 SM2 64字符长度的私钥,pub 就是 SM2 04开头的130字符长度的公钥。记得把":"去掉
openssl ec -in priv.key -pubout -noout -text
Using configuration from /usr/local/ssl/openssl.cnf
read EC key
Private-Key: (256 bit)
priv:
    80:fb:86:a8:eb:3e:af:c7:88:df:75:7f:64:71:44:
    b9:81:00:dd:e2:07:d0:13:d9:9a:06:fc:56:17:65:
    c3:42
pub:
    04:c6:60:7c:36:b8:e1:ce:14:ba:0b:2e:6d:0e:c6:
    00:d2:6c:ef:34:e2:86:17:28:6e:a4:dc:68:fa:92:
    53:eb:c1:8b:20:15:17:70:fb:65:71:73:8c:d3:dc:
    ef:d1:6a:ce:e1:0e:42:14:a8:dc:45:d0:26:27:76:
    c3:5c:15:54:42
ASN1 OID: sm2p256v1
NIST CURVE: SM2

编译PHP扩展

GmSSL的PHP语言绑定

# 检查php是否已经安装openssl扩展,如果PHP已经安装启用了 openssl 扩展,就不要使用此方法了.
php --ri openssl

cd ~/GmSSL/php/ext/openssl/
mv config0.m4 config.m4
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
sudo make install

问题处理

gmssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

sudo cp ~/GmSSL/libssl.so.1.1 /usr/lib64/

gmssl: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory

sudo cp ~/GmSSL/libcrypto.so.1.1 /usr/lib64/

https://github.com/guanzhi/GmSSL/issues/782

/root/GmSSL-master/php/ext/openssl/xp_ssl.c: 在函数‘php_openssl_tcp_sockop_accept’中:
/root/GmSSL-master/php/ext/openssl/xp_ssl.c:2342:29: 错误:自增操作数必须是左值
GC_REFCOUNT(stream->ctx)++;  

# 解决方法
vim /root/GmSSL-master/php/ext/openssl/xp_ssl.c
:2342
# 替换 GC_REFCOUNT(stream->ctx)++; 为 GC_REFCOUNT(stream->ctx);
:wq
2 条评论
未登录用户
支持 Markdown 语法
@sxin0
sxin0发表于将近 2 年前

six six six

@acane77
acane77发表于超过 1 年前

打卡