云通信-腾讯云,TLS独立模式公私钥生成

云通信-腾讯云,TLS独立模式公私钥生成

概述
TLS后台API我们提供了6个包供开发者下载,内容分别是windows下64位预编译文件包、windows下32位预编译文件包、linux下64位预编译文件包、linux下32位预编译文件包、zip格式的源代码文件和tar.gz格式的源代码文件。
linux平台
工具使用
工具的主要作用是在本地手动生成公私钥,手动生成sig和验证sig。
进入预编译文件包的tools目录,可以看到下面的几个文件,
├── genkey.sh 生成公私钥的批处理文件
├── openssl.cnf openssl配置文件,默认不要修改
├── openssl openssl工具可执行文件文件
└── tls_licence_tools 生成sig和校验sig的工具
生成公私钥
进入tools目录,执行下面的命令,
./genkey.sh
输出
read EC key
writing EC key
表示生成公私钥成功,公私钥分别为当前目录下的 public.pem 和 ec_key.pem。下面是演示的截图,

生成sig和校验sig
首先不带参数执行 tls_licence_tools,即执行下面的命令
./tls_licence_tools
输出
current version: 1.7
Usage:
get sig: ./tls_licence_tools 1 pri_key_file sig_file expire sdkappid acctype appid3rd identifier
get sig e.g.: ./tls_licence_tools 1 ec_key.pem sig 3600 1104620500 107 1104620500 group_root
verify sig: ./tls_licence_tools 2 pub_key_file sig_file sdkappid acctype appid3rd identifier
verify sig e.g.: ./tls_licence_tools 2 public.pem sig 1104620500 107 1104620500 group_root
下面是演示截图,

输出实际上是参数模板和示例。
执行类似于下面的命令可以生成 sig,
./tls_licence_tools 1 ec_key.pem sig 3600 1104620500 107 1104620500 group_root
执行类似于下面的命令可以校验 sig,
./tls_licence_tools 2 public.pem sig 1104620500 107 1104620500 group_root
下面演示截图,

下面解释下参数模板中参数的意义,
pri_key_file:私钥文件的路径
pub_key_file:公钥文件的路径
sig_file:sig 文件的路径,如果是生成 sig,那么会将 sig 写入这个文件,如果是校验 sig,那么会从这个文件读取 sig 的内容
expire:sig 的有效期
sdkappid:创建应用时页面上分配的 sdkappid
acctype:账号集成管理页面上配置之后显示的 accounttype
appid3rd:独立模式下与 sdkappid 一样,集成模式下第三方开放平台账号的 appid
identifier:用户标识,即用户 id
C++接口
首先包含include/tls_sig_api目录下的tls_signature.h。头文件中包含的接口,tls_gen_signature_ex和tls_check_signature_ex,前者是生成sig的接口,后者是校验sig的接口,详细的参数和返回值说明请参考头文件tls_signature.h。
然后是链接静态库,在lib目录下有下列目录,
├── jni
├── jsoncpp
├── openssl
└── tls_sig_api
需要链接的静态库是libjsoncpp.a、openssl目录下的libcrypto.a和libtlsignature.a。另外还需要链接系统的-ldl和-lz,典型的编译配置如下,
假设我们的代码的目录结构如下,
demo目录结构
|—include
|—lib
|—src
Makefile和demo.cpp源文件在 src 中,典型的工程配置如下
CFLAGS= -I../include/tls_sig_api -Wall -fPIC
LIBS= ../lib/jsoncpp/libjsoncpp.a ../lib/openssl/libcrypto.a -ldl -lz
g++ -o demo demo.cpp (CFLAGS) (LIBS)
下面的截图是我们开发时编译tls_licence_tools的命令行,由于是我们这边的开发环境,链接库的路径可以按照开发者自己的实际情况给出,

【特别注意】
如果程序有多线程调用TLS后台API的用法,请在程序初始化时和结束时分别调用下面的接口,
int multi_thread_setup(void);
void multi_thread_cleanup(void);
Java接口
目前java接口使用jni的方式实现。Java目录下tls_sigcheck.class,是由tls_sigcheck.java编译得到,如果有jdk兼容性问题,开发者可自行重新编译此文件,编译命令为,
javac -encoding utf-8 tls_sigcheck.java
请注意接口的包路径为com.tls.sigcheck,典型的使用方法是example目录下java版本demo的组织方式,
├── com
│ └── tls
│ └── sigcheck
│ └── tls_sigcheck.class
├── Demo.class
├── Demo.java
├── ec_key.pem
├── public.pem
└── README
之前提到java接口目前使用的jni的方式,所以Demo.java调用了载入so的语句,
demo.loadJniLib(“/home/jnisigcheck.so”);
开发者根据自己的存放jnisigcheck.so实际路径进行修改,预编译的jnisigcheck.so存放在lib/jni目录下。
demo的使用方式请参考example/java/README。下面是演示截图,

Java原生接口
1. 依赖的jar文件:
Java原生接口都封装在5个jar包中。在tls_sig_api/java_native/jar目录下:
├── bcpkix-jdk15on-152.jar
├── bcprov-jdk15on-152.jar
├── commons-codec-1.10.jar
├── Demo.java
├── gson-2.3.1.jar
├── json.jar
├── tls_sigature.java
└── tls_signature.jar
2. API说明
tls_signature.jar中含有tls_sigature.java这个源码文件,这个文件也是API的接口文件。里面有详细的接口说明,请开发者参考。
【特别注意】
接口中的publicBase64Key和privateBase64Key两个参数基本对应TLS官方网站公私钥生成页面上生成的公私钥。对于公钥:直接取公钥文件中的所有内容赋值给publicBase64Key参数即可;对于私钥,需要用tls api的tools目录下:openssl命令行工具一点额外的格式转换:
示例:./openssl pkcs8 -topk8 -in ec_key.pem -outform PEM -out p8_priv.pem -nocrypt
在tools目录下执行:openssl pkcs8 -topk8 -in ec_key.pem -outform PEM -out p8_priv.pem -nocrypt
格式转换后的,从p8_priv.pem取出所有的文件内容赋值给privateBase64Key参数就可以进行加密了。
PHP接口
php实现的方式较为简单,就是调用命令行工具生成sig,工具是bin/signature,php的调用方式如下,

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值