Я новичок в SSL, поэтому я начал с чтения множества учебных пособий, тем, форумов ... Информации много, и она немного сложна.Я пытаюсь установить SSL-соединение между моим компьютером и экземпляром Postgresql на другом сервере.Чтобы сделать это, я работал шаг за шагом.
Убедитесь, что соединение между ними работает без SSL
- . Подключитесь через командную строку:OK!
psql "hostaddr = XXXX port = 5432 user = postgres dbname = my_db"
- подключиться с помощью визуального инструмента БД (TeamSql, это как PgAdmin или MysqlWorkbench): OK!
Генерация ключей и сертификатов;Я следовал учебному пособию онлайн (все, что в «[]» - это параметр, который я скрывал)
Создание ключа сервера
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 извне
В файле 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.Я ищу самозаверяющий, но даже если я следовал различным учебникам, он все еще не работает ... Спасибо за вашу помощь и хороших выходных