SSL POSTGRES соединение с самозаверяющим сертификатом - PullRequest
0 голосов
/ 23 ноября 2018

Я новичок в SSL, поэтому я начал с чтения множества учебных пособий, тем, форумов ... Информации много, и она немного сложна.Я пытаюсь установить SSL-соединение между моим компьютером и экземпляром Postgresql на другом сервере.Чтобы сделать это, я работал шаг за шагом.

  1. Убедитесь, что соединение между ними работает без SSL

    • . Подключитесь через командную строку:OK!

    psql "hostaddr = XXXX port = 5432 user = postgres dbname = my_db"

    • подключиться с помощью визуального инструмента БД (TeamSql, это как PgAdmin или MysqlWorkbench): OK!
  2. Генерация ключей и сертификатов;Я следовал учебному пособию онлайн (все, что в «[]» - это параметр, который я скрывал)

Создание ключа сервера

openssl genrsa -des3 -out server.key 1024
chmod 400 server.key
chown postgres.postgres server.key
openssl req -new -key server.key -days 3650 -out server.crt -x509 -subj '/C=FR/ST=[MyCountry]/L=[MyCity]/O=[MyCompany]/CN=postgres/emailAddress=[my@email.com]'

Предположимчто корневой сертификат тот же

cp server.crt root.crt

После этого сгенерируйте клиентскую сторону.Сначала ключ

openssl genrsa -des3 -out /tmp/postgresql.key 1024

Затем CSR

openssl req -new -key /tmp/postgresql.key -out /tmp/postgresql.csr -subj '/C=FR/ST=[MyCountry]/L=[MyCity]/O=[MyCompany]/CN=postgres'

И наконец CRT

openssl x509 -req -in /tmp/postgresql.csr -CA root.crt -CAkey server.key -out /tmp/postgresql.crt -CAcreateserial
Активация SSL на стороне сервера.В файле PG_HBA.CONF добавьте определенную строку для обработки соединений SSL извне

enter image description here

В файле POSTGRESQL.CONF измените этистроки:

listen_addresses = '*'
[...]
ssl = on
[...]
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'
ssl_ca_file = 'root.crt'

Извлекает файлы postgresql.key, postgresql.crt и root.crt на моем компьютере в папке /home/user/.postgresql/.Также изменены права на файл postgresql.key (600)

Попробуйте первый шаг еще раз.В случае командной строки все в порядке.Но с помощью визуального инструмента, даже с активированной опцией SSL (и с использованием тех же трех файлов), есть два результата:

  • с опцией «Отклонить несанкционированный», установленной в ВЫКЛ: она работает

  • с параметром «Отклонить неавторизованный», установленным на «ВКЛ»: получена ошибка

Имя хоста / IP-адрес не 'не совпадают с альтернативными именами сертификатов: «IP: XXXX отсутствует в списке сертификата:»

(с XXXX IP моего сервера)

Итак, мой вопрос: все ли я сделал нормально?Почему есть разница между соединением командной строки и визуальным инструментом?С генерацией сертификатов все в порядке?

Конечно, я не хочу настоящей сертификации CA.Я ищу самозаверяющий, но даже если я следовал различным учебникам, он все еще не работает ... Спасибо за вашу помощь и хороших выходных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...