日志:08P01:无法接受 SSL 连接:检测到 EOF

问题描述 投票:0回答:1

我正在为 PostgreSQL-16.4 设置基于后量子加密 (PQC) 的自签名证书,旨在使用 PQC KEM 和 DSA 算法(特别是用于 KEM 的 Kyber768 和用于数字签名的 Dilithium3)。但是,我在日志中遇到以下错误:

LOG:  08P01: could not accept SSL connection: EOF detected
2024-11-06 09:26:26.822 AEDT [80760] LOCATION:  be_tls_open_server, be-secure-openssl.c:523

我使用的是openssl-3.3.2,并且我已经在openssl.conf文件中激活了PQC。

我已按照 PQC 要求为 PostgreSQL 客户端和服务器生成并配置了自签名证书。尽管调整了我的配置,但我似乎无法在 SSL 握手初始化期间解决此 EOF 问题。可能是什么原因造成的?如何排除或解决检测到的 EOF 错误?

postgresql.conf 设置:

listen_addresses = '*'  

# - SSL -

ssl = on
ssl_ca_file = '/Users/mandapatisaigautam/postgresql_certs/dilithium3_CA_2.crt'
ssl_cert_file = '/Users/mandapatisaigautam/postgresql_certs/server_pqc_2.crt'
#ssl_crl_file = ''
#ssl_crl_dir = ''
ssl_key_file = '/Users/mandapatisaigautam/postgresql_certs/server_pqc_2.key'
ssl_ciphers = 'HIGH:!aNULL' # allowed SSL ciphers
ssl_prefer_server_ciphers = on
#ssl_ecdh_curve = 'prime256v1'
ssl_min_protocol_version = 'TLSv1.2'
ssl_max_protocol_version = 'TLSv1.3'
#ssl_dh_params_file = ''
#ssl_passphrase_command = ''
#ssl_passphrase_command_supports_reload = off

代码修改:

在 fe-secure-openssl.c 中,我添加了以下代码。

if (!SSL_CTX_set1_groups_list(SSL_context, "kyber768") !=1 ) {
        fprintf(stderr, "Failed to set KEX/KEM group: kyber768\n");
        SSL_CTX_free(SSL_context);
        return -1;
    }
    fprintf(stdout, "Successfully set KEX/KEM group to: kyber768\n");

    return 0;

在 be-secure-openssl.c 中

static bool
initialize_kem(SSL_CTX *context, bool isServerStart)
{
#ifndef OPENSSL_NO_KEM

   
    if (SSL_CTX_set1_groups_list(context, "kyber768") != 1)
    {
        ereport(isServerStart ? FATAL : LOG,
                (errcode(ERRCODE_CONFIG_FILE_ERROR),
                 errmsg("KEX: could not set key exchange algorithms with specified KEM groups")));
        return false;
    }

    ereport(LOG, (errmsg("KEX: successfully set key exchange algorithms with specified KEM groups")));
#endif

    return true;
}

我已经注释掉了后端的initialize_ecdh函数。

我希望这些配置和代码更改能够使用 PQC 证书和 Kyber768 for KEM 成功进行 SSL 连接。但是,连接失败并出现 EOF 检测到错误。

可能导致此 EOF 错误的原因是什么?我应该采取哪些额外步骤或故障排除措施来解决该问题?

c postgresql openssl client-server post-quantum-cryptography
1个回答
0
投票
  1. 验证客户端 ssl 配置。 检查 ssl 模式是否设置正确。
  2. 检查证书和权限。
  3. 检查 ssl 版本和兼容性。
© www.soinside.com 2019 - 2024. All rights reserved.