证书问题

标签:证书问题 问题排查 证书位置 证书过期


证书放置位置出错(Java SDK)

问题描述

将证书放置于resources目录,SDK连接节点时,报出如下错误:

org.fisco.bcos.sdk.channel.ChannelImp    : init channel network error, Not providing all the certificates to connect to the node! Please provide the certificates to connect with the block-chain.

问题分析:

Java SDK默认的证书配置路径是conf,将证书放置与resources目录下但没有修改证书配置,导致SDK与节点建连时无法读取证书

解决方法:

  • 方法一:在项目根目录下新建conf文件夹,并将SDK证书拷贝到该目录,详细参考Java SDK快速入门章节的证书配置操作

  • 方法二:修改证书配置选项certPath,使其指向当前证书路径,证书配置选项说明参考这里

  • 方法三: 使用>= 2.7.1版本的Java SDK


证书过期

问题描述

节点或SDK使用的OpenSSL证书过期了,如何续期?

解决方法:

证书续期操作可以参考证书续期操作


证书验证失败(运维部署工具)

问题描述

使用运维部署工具下载命令提示certificate verify failed

解决方法:

在 ./pys/tool/utils.py 这个文件的开头中加入如下两行

import ssl
ssl._create_default_https_context = ssl._create_unverified_context

证书配置错误(1.x国密版控制台)

问题描述

搭建国密版本节点,并将config.ini中的chain.sm_crypto_channel配置为true,且参考安装教程配置国密版控制台拷贝了证书、配置了国密开关(将applicationContext.xml中的encryptType设置为1),启动节点报错如下:

Failed to init the console!  Failed to connect to nodes: [ ssl handshake failed:/127.0.0.1:20200]The reasons for failure may be:
	1. the configured certificate is not the same set of certificates as the node's certificate;
	2. the configured certificate is not issued by the same authority as the node's certificate.
	Please refer to https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/sdk/java_sdk.html#id24

问题分析

节点的chain.sm_crypto_channel=true时,SDK与节点之间应采用国密SSL的方式通信,控制台应该加载国密证书,默认的applicationContext.xml从如下配置中加载国密证书:

        <property name="gmCaCert" value="gmca.crt" />
        <property name="gmEnSslCert" value="gmensdk.crt" />
        <property name="gmEnSslKey" value="gmensdk.key" />
        <property name="gmSslCert" value="gmsdk.crt" />
        <property name="gmSslKey" value="gmsdk.key" />

生成的SDK国密证书位于sdk/gm子目录下,直接拷贝SDK证书到console/conf文件夹下,会找不到gmca.crtgmensdk.crt等证书,当控制台配置路径下不存在这些证书时,控制台会采用非国密SSL的方式连接节点,握手失败。

解决方案

当使用国密SSL连接节点时候,须将国密SDK证书拷贝到console/conf子文件夹,操作如下:

cp console/conf/gm/* console/conf

注:当节点的chain.sm_crypto_channel=false时,须保证console/conf子文件夹下不存在gmca.crtgmensdk.crt等国密证书与私钥,否则控制台会以国密SSL的方式初始化证书,抛出类似的错误,若出现该问题,可通过删除国密SDK证书,执行rm -rf console/conf/gm*的方式来解决