Рейтинг:1

«самозаверяющий сертификат в цепочке сертификатов», сервер или клиент?

флаг cn

Я создаю связь SSL между сервером базы данных pg и клиентом узла. После выполнения некоторых документов и реализации с помощью openssl узел жалуется на «самоподписанный сертификат в цепочке сертификатов». Добавление сертификата в хранилище сертификатов Windows не помогает.

openssl для сервера БД на основе пг документ:

openssl req -new -x509 -days 3650 -nodes -text -out serverdb.crt -keyout serverdb.key -subj "/CN=localhost"
Генерация закрытого ключа RSA
запись нового закрытого ключа в 'serverdb.key'

openssl req -new -nodes -text -out rootdb.csr -keyout rootdb.key -subj "/CN=localhost"
Генерация закрытого ключа RSA
запись нового закрытого ключа в «rootdb.key»

openssl x509 -req -in rootdb.csr -text -days 3650 -extfile cnf\openssl.cnf -extensions v3_ca -signkey rootdb.key -out rootdb.crt
Подпись ок
тема = CN = локальный хост
Получение закрытого ключа

openssl req -new -nodes -text -out serverdb.csr -keyout serverdb.key -subj "/CN=localhot"
Генерация закрытого ключа RSA
запись нового закрытого ключа в 'serverdb.key'

openssl x509 -req -in serverdb.csr -text -days 3650 -CA rootdb.crt -CAkey rootdb.key -CAcreateserial -out serverdb.crt
Подпись ок
тема=CN=localhot
Получение закрытого ключа ЦС

openssl для клиента узла:

openssl genrsa -des3 -out clientToDB.key 2048
Генерация закрытого ключа RSA, 2048-битный модуль (2 простых числа)
//rem удаление парольной фразы
openssl rsa -in clientToDB.key -out clientToDB.key
написание ключа RSA

//rem 2.8 Создайте сертификат postgresql.crt.
openssl req -new -key clientToDB.key -out clientToDB.csr
...
Общее имя (например, полное доменное имя сервера или ВАШЕ имя) []:localhost
Пожалуйста, введите следующие «дополнительные» атрибуты
будет отправлен с вашим запросом сертификата
Пароль вызова []:
Необязательное название компании []:

//rem 2.9 Подпишите его, используя доверенный корневой сертификат:
openssl x509 -req -in clientToDB.csr -CA rootdb.crt -CAkey rootdb.key -out clientToDB.crt -CAcreateserial
Подпись ок
Получение закрытого ключа ЦС

postgresql.conf

SSL = вкл. 
ssl_cert_file = 'serverdb.crt'
ssl_key_file = 'serverdb.key'
ssl_ciphers = 'ВЫСОКАЯ:СРЕДНЯЯ:+3DES:!aNULL' 
ssl_prefer_server_ciphers = вкл.
ssl_ca_file = 'rootdb.crt' 
ssl_crl_file = ''

настройка SSL узла:

SSL: 
{
    rejectUnauthorized: true, // false работает
        ca: fs.readFileSync("serverdb.crt").toString(),  
        ключ: fs.readFileSync("clientToDB.key").toString(), 
        сертификат: fs.readFileSync("clientToDB.crt").toString() 
}

Окружающая среда

Windows 10, pg и node как локальные, так и локальные
OpenSSL v1.1.1k
узел v14
нет корпоративного брандмауэра
Steffen Ullrich avatar
флаг se
`ca: fs.readFileSync("serverdb.crt").toString(),` - корневой CA сайта сервера является rootdb.crt, а не serverdb.crt. Кроме того, ваши команды сбивают с толку, поскольку вы сначала создаете serverdb.* в первой команде, а затем просто перезаписываете ее в следующих командах.
Jeb50 avatar
флаг cn
Команды @SteffenUllrich основаны на [документе pg] (https://www.postgresql.org/docs/13/ssl-tcp.html#SSL-CERTIFICATE-CREATION). После замены serverdb.crt на rootdb.crt получил код: DEPTH_ZERO_SELF_SIGNED_CERT. сообщение: 'самоподписанный сертификат'`
Steffen Ullrich avatar
флаг se
*"Команды основаны на документации pg."* - вы смешиваете команды из документации, которые не должны смешиваться. Он документирует два способа: самоподписанные сертификаты и сертификаты, выданные центром сертификации, и один из них предполагается использовать только одним способом. Это также объясняет, когда что следует использовать. Пожалуйста, ознакомьтесь с документацией более подробно.
Jeb50 avatar
флаг cn
@SteffenUllrich Ценю руководство.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.