【问题标题】:OpenSSL generating SSL keys = ca md too weak生成 SSL 密钥的 OpenSSL = ca md 太弱
【发布时间】:2022-12-16 06:49:05
【问题描述】:

尝试在 openssl3 环境中为 mariadb 生成 ssl 证书

这个post似乎也没有给我任何解决方案

收到错误:

SSL error: Unable to get certificate from '/etc/certs/server-cert.pem'
2022-09-11 19:14:11 0 [Warning] Failed to setup SSL
2022-09-11 19:14:11 0 [Warning] SSL error: Unable to get certificate
2022-09-11 19:14:11 0 [Warning] SSL error: error:0A00018E:SSL routines::ca md too weak

/etc/certs/server-cert.pem 肯定在这里;与找到并填充的其他文件夹位于同一文件夹中,所以我猜我的问题出在md too weak

生成文件时没有错误;这里是从下面的脚本生成的文件列表

我搜索了很多但没有找到明确的解决方案。每个人都说你要么降低 openssl 的安全级别,要么使用更好的算法,但我在网上找不到任何例子。我还添加了 -sha256 但没有成功

这是我的脚本:

#bin/sh

# SERVER
# create a new CA key
openssl genrsa 4096 > ca-key.pem
# create the certificate
openssl req -new -x509 -nodes -days 365000 -key ca-key.pem -out ca-cert.pem -sha256 -subj "/C=EU/ST=EU/L=EU/O=EU/OU=vps/CN=server"
# create the certificate for the server
openssl req -newkey rsa:2048 -days 365000 -nodes -keyout server-key.pem -out server-req.pem -sha256 -subj "/C=EU/ST=EU/L=EU/O=EU/OU=vps/CN=serverreq"
# process the new certificate
openssl rsa -in server-key.pem -out server-key.pem
# sign the certificate
openssl x509 -req -in server-req.pem -days 365000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem

# CLIENT
# create client certificate
openssl req -newkey rsa:2048 -days 365000 -nodes -keyout client-key.pem -out client-req.pem -subj "/C=EU/ST=EU/L=EU/O=EU/OU=vps/CN=client"
# process key
openssl rsa -in client-key.pem -out client-key.pem
# sign certificate
openssl x509 -req -in client-req.pem -days 365000 -CA ca-cert.pem -CAkey ca-key.pem -sha256 -set_serial 01 -out client-cert.pem

和我的码头工人组成

database:
    container_name: mariadb
    image: "mariadb:${MARIADB_VERSION}"
    restart: always
    env_file: .env
    volumes:
      - "${SQL_INIT}:/docker-entrypoint-initdb.d"
      - type: bind
        source: ${MARIADB_DATA_DIR}
        target: /var/lib/mysql
      - type: bind
        source: ${MARIADB_LOG_DIR}
        target: /var/logs/mysql
      - type: bind
        source: ${MARIADB_CERTS_DIR}
        target: /etc/certs/
    environment:
      MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}"
      MYSQL_DATABASE: "${MYSQL_DATABASE}"
      MYSQL_USER: "${MYSQL_USER}"
      MYSQL_PASSWORD: "${MYSQL_PASSWORD}"
    ports:
      - "3306:3306"
    networks:
      - app_network
    command: [  
                "--character-set-server=utf8mb4",
                "--collation-server=utf8mb4_unicode_ci",
                "--bind-address=database",
                "--require_secure_transport=ON",
                "--ssl-ca=/etc/certs/ca-cert.pem",
                "--ssl-cert=/etc/certs/server-cert.pem",
                "--ssl-capath=/etc/certs/",
                "--ssl-key=/etc/certs/server-key.pem",
                "--default_authentication_plugin=mysql_native_password" 
              ]

【问题讨论】:

    标签: openssl mariadb ssl-certificate


    【解决方案1】:

    长话短说

    如果您使用 openssl 3,您拥有的脚本将生成良好的证书。

    动机: 我有一个类似的脚本,从 PC 转移到 Mac 后,我被你描述的问题困扰了一段时间。

    针对我的案例但可能对其他人有帮助的详细信息:

    如果您使用brew 安装 openssl@3,但仍然有问题,您可以查看您使用 openssl version 的内容,如果它不是 openssl@3,则使用 which openssl 的位置,然后将您的代码更改为指向正确的二进制文件,可能位于/usr/local/opt/openssl/bin/openssl

    我知道这有点晚了,但希望它能帮助别人。

    【讨论】:

      【解决方案2】:

      请仔细阅读错误消息:MD5(还有 SHA1)被认为是不安全的,并且几年以来被最近的 TLS 库拒绝。

      您应该使用安全密码重新生成您的 CA 和证书,因为您当前的密码被认为不再安全。

      来自维基百科: “2008 年 12 月 31 日,CMU 软件工程研究所得出结论,MD5 本质上是“密码破损且不适合进一步使用”。

      那是14年前....

      【讨论】:

      • 是的,我明白了,但是我该怎么做呢?
      • 哪里说用了MD5?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-09
      • 2012-11-15
      • 2020-07-23
      • 2013-12-02
      • 2014-05-10
      • 2017-12-07
      • 2020-06-25
      相关资源
      最近更新 更多