mysql - 由于证书错误,无法为 Fabric-ca 服务器设置 mysql 数据库

标签 mysql ssl-certificate hyperledger-fabric hyperledger hyperledger-fabric-ca

我正在尝试使用以下链接使用 mysql 数据库设置 Hyperledger Fabric-ca:http://fabric-ca.readthedocs.io/en/latest/users-guide.html

按照链接中的内容,我尝试使用 mysql 设置 Fabric-ca-server 作为数据库,并在 Fabric-ca-server-config.yaml 中指定以下配置

db:
  type: mysql
  datasource: root:rootpw@tcp(localhost:3306)/ca?parseTime=true&tls=custom
  tls:
      enabled: true
      certfiles:
        - server-cert.pem
      client:
        certfile: client-cert.pem
        keyfile: client-key.pem

我使用docker容器来启动mysql数据库:

docker run --name=mysql --env="MYSQL_ROOT_PASSWORD=mypassword" -p 3306:3306 -p 33060:33060 mysql

在我的容器启动后,会生成这些日志:

[System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.17) starting as process 1
[Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
[Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
[System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.17'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.
[System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock' bind-address: '::' port: 33060

当我启动 Fabric-ca-server 时,就会生成这些日志:

[INFO] Configuration file location: /home/trinayan/Documents/biltinetwork/newca/fabric-ca-server-config.yaml
[INFO] Starting server in home directory: /home/trinayan/Documents/biltinetwork/newca
[WARNING] Unknown provider type: ; metrics disabled
[INFO] Server Version: 1.4.2
[INFO] Server Levels: &{Identity:2 Affiliation:1 Certificate:1 Credential:1 RAInfo:1 Nonce:1}
[WARNING] &{69 The specified CA certificate file /home/trinayan/Documents/biltinetwork/newca/ca-cert.pem does not exist}
[INFO] generating key: &{A:ecdsa S:256}
[INFO] encoded CSR
[INFO] signed certificate with serial number 646347233835345802692423971159804543235939577965
[INFO] The CA key and certificate were generated for CA 
[INFO] The key was stored by BCCSP provider 'SW'
[INFO] The certificate is at: /home/trinayan/Documents/biltinetwork/newca/ca-cert.pem
[ERROR] Error occurred initializing database: Failed to connect to MySQL database: x509: certificate is valid for MySQL_Server_8.0.17_Auto_Generated_Server_Certificate, not localhost
[INFO] Home directory for default CA: /home/trinayan/Documents/biltinetwork/newca
[INFO] Operation Server Listening on [::]:36189
[INFO] Listening on http://0.0.0.0:7054

我不明白为什么会出现这个错误:

[ERROR] Error occurred initializing database: Failed to connect to MySQL database: x509: certificate is valid for MySQL_Server_8.0.17_Auto_Generated_Server_Certificate, not localhost

因为这与 ssl 证书有关,所以任何人都可以帮助我。

最佳答案

从错误中,我假设您正在尝试通过 TLS 连接到 MySQL。 看起来 MySQL 自动生成了一个服务器证书,其通用名称或 SAN 为 MySQL_Server_8.0.17_Auto_Generate_Server_Certificate。 可能在您的配置中,您尝试连接到与 MySQL_Server_8.0.17_Auto_Generate_Server_Certificate 不匹配的 localhost

所以你有几个选择:

  • 关注 https://dev.mysql.com/doc/refman/8.0/en/creating-ssl-rsa-files-using-mysql.html并使用 openssl 生成证书,并将通用名称或 SAN 设置为 localhost

  • 在运行 CA 和 MySQL 的主机服务器上创建一个主机条目,将 MySQL_Server_8.0.17_Auto_Generate_Server_Certificate 映射到 127.0.0.1 并替换 localhost 与 Fabric-ca-server 配置文件中的 MySQL_Server_8.0.17_Auto_Generate_Server_Certificate

  • 不要使用 TLS,看看是否有效

我会选择第一个选项。

关于mysql - 由于证书错误,无法为 Fabric-ca 服务器设置 mysql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58097781/

相关文章:

mysql - 在 Django 中使用 auto_now_add 保存模型实例返回错误消息 Column 'xxx' cannot be null

php - SQL 将 ORDER BY 结果作为数组返回

hyperledger-fabric - 私有(private)数据收集的重点是什么?

docker - 无法连接 尝试连接到本地对等点时出错 : context deadline exceeded

java - 无法解析 serviceImpl 类中的 'ST_GeomFromText'

php - 如何优化mysql查询在高负载下的性能?

linux - 如何从证书文件(.crt 扩展名)生成证书请求和私钥文件(.pem 扩展名)

android - javax.net.ssl.SSLPeerUnverifiedException : No peer certificate on Android 4. x 和 5.x

curl - Heroku SSL 问题给我验证失败

hyperledger-fabric - 执行 Hyperledger Fabric 2.0 文档中的部署脚本后,链代码未部署在测试网络上