部署安全插件
本节主要用于指导合作方部署安全插件,并通过接口调用获取公钥地址用于络谱平台准入。
版本说明
安全插件主要有 v2.0.0+ 及 v1.3.1 两个版本,其中 v2.x+ 可通过管理控制台下载,v1.x的版本将不再支持下载。
v2.0.0+ 与 v1.3.1 使用 MySQL 数据库。
请注意,由于私钥无法迁移,若您更换软件版本,则需要重新生成密钥,并将新的公钥地址绑定到身份合约,即通过管理控制台提交修改身份合约申请。
以下分别是两个版本的使用说明。
版本v2.0.0及以上
安装包文件说明:
文件名称 | 文件说明 |
---|---|
application.properties | 配置文件 |
hsmserver-web-*.jar | 项目文件 |
schema_mysql.sql | 数据库初始化脚本 |
logback.xml | 日志配置文件 |
shutdown.sh | 项目关闭文件 |
startup.sh | 项目启动文件 |
系统环境要求:
选项 | 系统要求 |
---|---|
内存 | ≥4G |
CPU | 双核 |
磁盘 | ≥50GB |
操作系统 | Ubuntu 16.04 |
JDK | JDK 1.8+ |
MySQL | 5.6+ |
API接口参数说明:
- 安全插件服务地址:
HSM_HOST
- 安全插件服务端口号:
PORT
- 安全插件的密钥唯一标识:
userId
第一步 修改JDK环境
安全插件服务需要修改原 JDK 的两个 jar 包.
破解 AES 加解密的长度限制,需要替换以下 jar 包:
-local_policy.jar
-US_export_policy.jar
替换目录:$JAVA_HOME/jre/lib/security
说明:jdk是“jdk-8u162”及以上版本就跳过此步骤。
第二步 初始化数据库
在MySQL中创建给本项目使用的数据库。
切换至上一步创建的数据库,并运行
initDB.sql
,1.2.0.sql
,1.3.0.sql
文件中的数据库初始化语句
第三步 拷贝文件到目标文件夹
将 application.properties
,hsm-server-1.2.0.jar
,logback.xml
,shutdown.sh
,startup.sh
文件拷贝到目标文件夹中,用于之后的项目启动。
第四步 修改application.properties配置文件
application.propertes配置文件中包含两类配置项:用户需要按照实际部署情况修改的配置项,和BROP平台中不会用到所以无需修改的配置项。
以下列举用户需要修改的配置项,其余配置项请不要修改:
- web服务配置项
说明:分别表示启动的端口号,uri地址编码、服务器上下文路径
# 启动的端口号
server.port=8080
# uri地址编码
server.tomcat.uri-encoding=UTF-8
# 服务器上下文路径,默认值为/
# 若server.tomcat.basedir=/ 则访问服务路径为http://HSM_HOST:PORT/
# 若server.tomcat.basedir=/hsmServer,
# 则访问服务路径为http://HSM_HOST:PORT/hsmServer
server.tomcat.basedir=/
2.数据库配置项
说明:分别表示jdbc驱动类的位置,数据库地址,数据库帐号密码和最大 连接数
# 服务端口号
server.port=8888
# jdbc驱动类的位置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# 数据库地址,请根据实际MySQL配置填写ip和port参数
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/hsm_server?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull
# 数据库帐号
spring.datasource.username=test
# 数据库密码
spring.datasource.password=test
第五步 部署安全插件服务
使用以下命令部署并启动服务:bash startup.sh
说明:
- 服务启动之后,当前目录下会生成log/hsmserver.log文件,该文件记录了本项目所有可输出日志信息。其中日志信息的配置在日志配置文件logback.xml中定义,如需修改日志配置可以参考logback官网查阅具体语法格式。
- 如需关闭服务可以使用以下命令:bash shutdown.sh
- 执行第五步,若能正常生成密钥,则启动成功。
第六步 生成密钥
调用生成密钥接口可以在安全插件内生成一对Eckey密钥,并返回公钥地址。如果已经存在,则不重复创建,返回对应userId的公钥地址。安全插件的数据表中存放的是账户公私钥对,请做好备份,在安全插件迁移或者其他不可预知的数据丢失时能恢复这些表信息。
请求地址:http://HSM_HOST:PORT/crypt/generateKeyFromHsm.json?userId=[userId]
参数列表:
名称 | 类型 | 描述 |
---|---|---|
userId | String | 密钥的唯一标识,例如myCompanyAdmin |
接口返回:
名称 | 类型 | 描述 |
---|---|---|
detail | String | 密钥公钥地址,用于传给BROP运营方进行身份准入 |
请求示例:http://HSM_HOST:PORT/crypt/generateKeyFromHsm.json?userId=myCompanyAdmin
返回示例:
{
"code": "SUCCESS",
"detail":"AF4F219A80D206DC6CE04A64603887396BD0C6D1"
}
版本v1.3.1
安装包文件说明:
文件名称 | 文件说明 |
---|---|
application.properties | 配置文件 |
hsm-server-1.3.1.jar | 项目文件 |
initDB.sql,1.2.0.sql,1.3.0.sql | 数据库文件 |
logback.xml | 日志配置文件 |
shutdown.sh | 项目关闭文件 |
startup.sh | 项目启动文件 |
系统环境要求:
选项 | 系统要求 |
---|---|
内存 | ≥4G |
CPU | 双核 |
磁盘 | ≥50GB |
操作系统 | Ubuntu 16.04 |
JDK | JDK 1.8+ |
MySQL | 5.6+ |
API 接口参数说明:
- 安全插件服务地址:
HSM_HOST
- 安全插件服务端口号:
PORT
- 安全插件的密钥唯一标识:
userId
第一步 修改 JDK 环境
安全插件服务需要修改原 JDK 的两个 jar 包.
破解 AES 加解密的长度限制,需要替换以下 jar 包:
-local_policy.jar
-US_export_policy.jar
替换目录:$JAVA_HOME/jre/lib/security
说明:jdk是“jdk-8u162”及以上版本就跳过此步骤。
第二步 拷贝文件到目标文件夹
将application.properties
,hsm-server-1.3.1.jar
,logback.xml
,shutdown.sh
,startup.sh
文件拷贝到目标文件夹中,用于之后的项目启动。
第三步 修改 application.properties 配置文件
application.propertes 配置文件中包含两类配置项:用户需要按照实际部署情况修改的配置项,和 BROP 平台中不会用到所以无需修改的配置项。
以下列举用户需要修改的配置项,其余配置项请不要修改:
1.web 服务配置项
说明:分别表示启动的端口号,uri 地址编码、服务器上下文路径
# hsm impl type(virtual/hw)
implement=virtual
# 启动的端口号
server.port=8080
# uri地址编码
server.tomcat.uri-encoding=UTF-8
# 服务器上下文路径,默认值为/
# 若server.tomcat.basedir=/ 则访问服务路径为http://HSM_HOST:PORT/
# 若server.tomcat.basedir=/hsmServer,
# 则访问服务路径为http://HSM_HOST:PORT/hsmServer
server.tomcat.basedir=/
2.数据库配置项
说明:分别表示jdbc驱动类的位置,数据库地址,数据库帐号密码
# jdbc驱动类的位置
db.driverClassName=com.mysql.jdbc.Driver
# 数据库地址,请根据实际MySQL配置填写ip和port参数
db.url=jdbc:mysql://[mysql_ip]:[mysql_port]/[db_name]?prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=true
# 数据库帐号
db.username=brop
# 数据库密码
db.password=brop
# 数据库最大连接数
db.maxActive=500
第四步 部署安全插件服务
使用以下命令部署并启动服务:bash startup.sh
说明:
- 服务启动之后,当前目录下会生成
log/hsmserver.log
文件,该文件记录了本项目所有可输出日志信息。其中日志信息的配置在日志配置文件logback.xml
中定义,如需修改日志配置可以参考 logback 官网查阅具体语法格式。 - 如需关闭服务可以使用以下命令:
bash shutdown.sh
- 执行第五步,若能正常生成密钥,则启动成功。
第五步 生成密钥
调用生成密钥接口可以在安全插件内生成一对Eckey密钥,并返回公钥地址。如果已经存在,则不重复创建,返回对应userId的公钥地址。安全插件的数据表中存放的是账户公私钥对,请做好备份,在安全插件迁移或者其他不可预知的数据丢失时能恢复这些表信息。
请求地址:http://HSM_HOST:PORT/crypt/generateKeyFromHsm.json?userId=[userId]&type=[ECC/SM2]
参数列表:
名称 | 类型 | 描述 |
---|---|---|
userId | String | 密钥的唯一标识,例如myCompanyAdmin |
type | String | 密钥类型,ECC或SM2 |
接口返回:
名称 | 类型 | 描述 |
---|---|---|
detail | String | 密钥公钥地址,用于传给BROP运营方进行身份准入 |
请求示例:http://HSM_HOST:PORT/crypt/generateKeyFromHsm.json?userId=myCompanyAdmin&type=SM2
返回示例:
{
"code": "SUCCESS",
"detail":"AF4F219A80D206DC6CE04A64603887396BD0C6D1"
}
版本从v1.x升级到v2.x的步骤
第一步 关闭安全插件服务
参考 关闭程序中的 关闭安全插件服务。
第二步 备份安全插件必要文件
备份安全插件的数据库文件、配置文件、日志配置文件。
第三步 替换安全插件重要文件
替换加密机包文件hsm*.jar
、应用配置文件application.properties
、启动和关闭脚本start.sh
和shutdown.sh
。
第四步 参考本文档版本v2.0.0及以上
章节配置并验证安全插件服务
参考本文档版本v2.0.0及以上
章节配置并验证安全插件服务。