logo资料库

mosquitto+gmssl编译,建立国密的MQTT消息通道.doc

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
1.客户端支持gmssl
2.服务器支持gmssl
3.证书制作
4.证书配置
5.测试结果
1. 客户端支持 gmssl no-async shared 客户端首先编译 gmssl ./Configure no-asm --prefix=$STAGING_DIR/usr --openssldir=/usr/ssl linux-mips32 --openssldir 参数表示实际使用的时候,链接的配置路径 no-async 表示关闭异步,但是实际编译会有问题,注意由于这个导致的问题,基本都可以通 过修改注释让其编译通过,实际使用不会有问题 然后编译 paho-mqtt,注意要链接 gmssl 生成的 libssl 和 libcrypto --cross-compile-prefix=mips-openwrt-linux- 2. 服务器支持 gmssl 服务器我用的 centos,首先也是编译 gmssl, ./Configure shared linux-x86_64 --prefix=/usr/local/gmssl,注意以后多个地方会引用这个路径, 千万不要装到系统目录下。否则很麻烦。 编译之后 gmssl 和系统原带的 openssl,会因为引用 lib 的路径产生冲突…… 目前解决办法就是,使用 gmssl 的时候,就调用一句 export LD_LIBRARY_PATH=/usr/local/gmssl/lib/:$LD_LIBRARY_PATH,意思就是让系统把 gmssl 的库暴露出来,一般简易在一个脚本中使用,脚本工作结束后,就无效了。 这样就不会导致系统原带 openssl 出现问题,要知道系统原带的 openssl,关系各个部分,出 现问题会导致系统瘫痪。 然后编译 mosquitto,需要安装一些软件 yum install gcc-c++ yum install make yum install gcc yum install c-ares-devel yum -y install docbook-style-xsl( find / -name docbook.xsl,然后修改 man/manpage.xsl 那行) 编译过程要指定一下 gmssl 的头文件路径和 lib 路径 修改 mosquitto 下面的 config.mk
然后编译,此时需要指明 ssllib 的路径。我写了一个脚本放在 mosquitto 目录下 #!/bin/sh export LD_LIBRARY_PATH=/usr/local/gmssl/lib/:$LD_LIBRARY_PATH make clean make 最后安装 systemctl status firewalld.service systemctl stop firewalld.service systemctl disable firewalld.service 3. 证书制作 #!/usr/bin/env bash # When OpenSSL prompts you for the Common Name for each certificate, use different names. export LD_LIBRARY_PATH=/usr/local/gmssl/lib/:$LD_LIBRARY_PATH # CA key ##openssl genrsa -out ca.key 2048 /usr/local/gmssl/bin/gmssl ecparam -genkey -name sm2p256v1 -out ca.key # CA csr ##openssl req -new -subj "/CN=ca" -key ca.key -out ca.csr /usr/local/gmssl/bin/gmssl req -new -subj "/CN=ca" -key ca.key -out ca.csr # CA crt ##openssl x509 -req -in ca.csr -out ca.crt -signkey ca.key -days 3650 /usr/local/gmssl/bin/gmssl x509 -req -in ca.csr -out ca.crt -signkey ca.key -days 3650 # server key ##openssl genrsa -out server.key 2048 /usr/local/gmssl/bin/gmssl ecparam -genkey -name sm2p256v1 -out server.key # server.csr ##openssl req -new -subj "/CN=server" -key server.key -out server.csr
/usr/local/gmssl/bin/gmssl req -new -subj "/CN=server" -key server.key -out server.csr # server.crt ##openssl x509 -req -in server.csr -out server.crt -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 /usr/local/gmssl/bin/gmssl x509 -req -in server.csr -out server.crt -CAcreateserial -days 3650 # server.crt verify ##openssl verify -CAfile ca.crt /usr/local/gmssl/bin/gmssl verify -CAfile ca.crt -CA ca.crt -CAkey ca.key server.crt server.crt # client key ##openssl genrsa -out client.key 2048 /usr/local/gmssl/bin/gmssl ecparam -genkey -name sm2p256v1 -out client.key # client.csr ##openssl req -new -subj "/CN=client" -key client.key -out client.csr /usr/local/gmssl/bin/gmssl req -new -subj "/CN=client" -key client.key -out client.csr # client.crt ##openssl x509 -req -in client.csr -out client.crt -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 /usr/local/gmssl/bin/gmssl x509 -req -in client.csr -out client.crt -CAcreateserial -days 3650 # client.crt verify ##openssl verify -CAfile ca.crt /usr/local/gmssl/bin/gmssl verify -CAfile ca.crt -CA ca.crt -CAkey ca.key client.crt client.crt 4. 证书配置 客户端证书配置,pahomqtt 支持证书配置,双向校验的话需要配置 ca 的证书
服务端证书配置(双向认证) 5. 测试结果 抓包测试结果,
这些 unknown 的都是国密算法的套件 服务端选用的 0xe107 /usr/local/gmssl/bin/gmssl ciphers -V 查看套件
分享到:
收藏