鉴权服务排查
机器指纹方式(软件)鉴权
该文档用于帮助您快速定位鉴权服务异常原因。
前面部署章节有提到私有化应用健康检查(或故障排查)脚本:trouble_shooting.tar,该工具会自动检查鉴权服务是否正常。
点击展开 》如何手动检查鉴权服务进程、端口号以及相关日志?
1、检查鉴权服务进程是否存在
ps -ef|grep auth_server
服务正常启动后如下图所示:
root 3126 3118 0 10月13 ? 00:00:10 /home/baidu/work/c-offline-security-server/auth_server
root 3129 3126 3 10月13 ? 00:45:20 /home/baidu/work/c-offline-security-server/auth_server
root 15042 12347 0 11:33 pts/0 00:00:00 grep --color=auto auth_server
2、检查鉴权服务端口是否监听
netstat -apn|grep -E '8443|7091|7092'
端口正常监听的话返回如下
tcp 0 0 0.0.0.0:7091 0.0.0.0:* LISTEN 3129/auth_server
tcp 0 0 0.0.0.0:7092 0.0.0.0:* LISTEN 3129/auth_server
tcp 0 0 0.0.0.0:8443 0.0.0.0:* LISTEN 3129/auth_server
3、检查鉴权启动和鉴权请求日志
1)检查是否有报错信息,报错含义及解决办法请见下面表格介绍。
cat /home/baidu/work/c-offline-security-server/log/auth_server.log |grep -Ei 'warning|error' |grep -v 'gethostbyname_r'|grep -v '8877'
cat /home/baidu/work/c-offline-security-server/log/aipe_info_$(date +%Y-%m-%d).log|grep -i 'error'
2)检查离线鉴权服务c-offline-security-server是否启动成功
从/home/baidu/work/c-offline-security-server/log/auth_server.log查看鉴权服务启动日志
启动成功日志如下:
从/home/baidu/work/c-offline-security-server/log/aipeinfo当天日期.log查看算子应用程序向鉴权服务发起请求的日志
启动成功日志如下:
1) c-offline-security-server 应用常见鉴权报错日志和其对应含义如下:
鉴权报错日志 | 含义 | 解决办法 |
---|---|---|
verify finger is invalid | license里的指纹错误 | 请确认运行鉴权服务的服务器是否有变化, 如硬盘、网卡等,如有变化, 请重新提取指纹、申请授权 |
verify product has not foud | 产品未授权 | 此服务器未获得授权,无法运行OCR模型 请重新提取指纹、申请授权 |
verify product lc is expired | 产品授权过期 | 请重新提取指纹、申请授权 |
instance_check reg fail,r_list full | 实例池已满 运行模型的服务器数量 (或实例数量)超出授权上限 | 请减少运行模型的服务器数量、 或实例数量 |
Environment is unsafe | 运行环境不安全,可能是license的版本不对或者人为修改了license。 | |
cache client get context error: Connection refused | 鉴权服务连接本机缓存失败,可能原因:7091和7092缓存端口没有启动,或者部署时填写的鉴权节点IP有误 |
2)OCR算子容器日志错误码解读
通过执行docker logs -f 容器名或容器ID
或 根据私有化应用健康检查(或故障排查)脚本:trouble_shooting.tar
输出的容器日志结果发现有类似如下报错内容:
aipe auth failed, ret = 501
aipe auth failed, ret = 504
相关错误码解读如下:
错误码 | 含义 | 备注 |
---|---|---|
0 | 鉴权成功 | |
1 | curl初始化报错curl不支持的协议。离线鉴权通过https做了双向认证,如果鉴权server不是https,会报这个错 | 更多<100的可能未列出的错误码请直接参考:https://curl.haxx.se/libcurl/c/libcurl-errors.html |
7 | 无法连接到鉴权服务器,一般是网络不通或者鉴权服务没起来(8443端口没开) | |
28 | 请求鉴权服务超时。目前设置的connect timeout为1s,socket timeout为3s | |
35 | ssl双向认证失败。离线鉴权通过https做了双向认证,如果客户端/服务端证书不对,会报这个错 | |
501 | 鉴权失败,实例数超过上限 | |
502 | 鉴权失败,老版本状态码未拆分,产品未授权或指纹错误时触发,SDK三位版本1-0-12后,产品未授权错误码为508,指纹错误为509 | |
503 | 鉴权失败,产品授权过期了 | |
504 | 鉴权失败,申请的license中开启了qps控制,但是运行时却未开启异步鉴权 | 需要将容器启动脚本start-1.sh 中 EASYPACK_ENABLE_ASYNC_AUTH环境变量值设置为1 |
505 | 鉴权失败,qps超限 | |
506 | 鉴权失败,异步鉴权模式下,异步鉴权的线程挂掉了 | |
507 | 鉴权失败,异步鉴权模式下,缓存的鉴权结果太长时间(10min)没有刷新。比如鉴权线程被挂起了,导致无法更新鉴权结果。 | |
508 | 鉴权失败,产品未授权 | |
509 | 鉴权失败,机器指纹有误 | |
2012 | 鉴权失败,鉴权服务器全部不可用。(AIPE_SECURITY_SERVER_HOST如果配置了多个ip,会自动开启到多个鉴权服务的探活,如果探活全部失败了,则报这个错) | |
-1 | 未知错误 |
加密狗方式(硬件)鉴权
如果使用了加密狗硬件辅助鉴权,除了按照上文【机器指纹方式(软件)鉴权】提到的排查思路依次进行排查以外, 需要额外检查以下内容
如以下指令无法执行,请参照部署文档执行
bash download.sh
命令,该脚本会自动下载加密狗相关驱动文件,之后按照部署文档一键安装或单独安装即可。
1)加密狗驱动是否运行
service codemeter status
正常情况下返回 CodeMeter Server is running.
2)加密狗硬件是否被机器识别
cmu -x
识别成功的结果如下
cmu - CodeMeter Universal Support Tool.
Version 6.70 of 2018-Jul-19 (Build 3152) for Linux
Copyright (C) 2007-2018 by WIBU-SYSTEMS AG. All rights reserved.
List all locally connected CmContainers:
- CmContainer with Serial Number 3-4512221 and version 4.10
...
Result: 1 CmContainer(s) listed.
识别失败的结果如下:
cmu - CodeMeter Universal Support Tool.Version 6.70 of 2018-Jul-19 (Build 3152) for LinuxCopyright (C) 2007-2018 by WIBU-SYSTEMS AG. All rights reserved.List all locally connected CmContainers:Result: 0 CmContainer(s) listed.
查看license信息
curl 0.0.0.0:8443/security/license
返回示例如下
{"dogCount":0,"fingerType":3,"holder":"15322","info":"license","issued":"2021-10-12 16:27:36","issuer":"baidu","productLicenses":[{"functions":[],"instanceSize":1,"notAfter":"2021-11-26 00:00:00","notBefore":"2021-10-11 00:00:00","qps":0,"subject":"general_nor"}],"safeType":1,"securityType":2}
license有效期为 notBefore ~ notAfter