Я создаю связь 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
нет корпоративного брандмауэра