developer tip

psql을 사용하여 SSL 모드에서 postgresql에 연결

optionbox 2020. 12. 8. 08:00
반응형

psql을 사용하여 SSL 모드에서 postgresql에 연결


postgreSQL 서버에 SSL 인증서를 구성하려고합니다. 데이터 디렉터리에 인증서 파일 (server.crt)과 키 (server.key)를 만들고 SSL 매개 변수를 "on"으로 업데이트하여 보안 연결을 활성화했습니다.

나는 단지 서버가 클라이언트 측의 서버 인증서로 인증되기를 원하며 서버 측에서 클라이언트의 신뢰성을 요구하지 않습니다. 명령을 연결하고 실행하기 위해 psql을 클라이언트로 사용하고 있습니다.

PostgreSQL 8.4 와 Linux를 사용 하고 있습니다. 아래 명령을 사용하여 SSL이 활성화 된 서버에 연결하려고했습니다.

       psql "postgresql://localhost:2345/postgres?sslmode=require"

하지만 나는 점점

       psql: invalid connection option "postgresql://localhost:2345/postgres?sslmode"

여기서 뭐가 잘못 되었나요? SSL 모드가 활성화 된 상태에서 서버에 연결하려는 방식이 맞습니까? 클라이언트가 아닌 서버 만 인증해도 괜찮습니까?

제발 도와주세요.


psql 9.2 이하에서는 옵션에 대해이 URL과 유사한 구문을 허용하지 않습니다.

SSL 사용은 sslmode=value명령 줄 옵션 또는 PGSSLMODE 환경 변수 의해 구동 될 수 있지만 기본값은 prefer, SSL 연결이 아무것도 지정하지 않고 먼저 자동으로 시도됩니다.

conninfo 문자열을 사용한 예 ( psql 8.4 용으로 업데이트 됨 )

psql "sslmode=require host=localhost dbname=test"

더 많은 옵션을 보려면 매뉴얼 페이지읽으십시오 .


psql --set=sslmode=require -h localhost -p 2345 -U thirunas \
-d postgres -f test_schema.ddl

psql "sslmode=require host=localhost port=2345 dbname=postgres" --username=some_user

postgres psql 문서 에 따르면 연결 매개 변수 만 conninfo 문자열에 넣어야합니다 (이것이 우리 예제에서 --username이 해당 문자열에없는 이유입니다).


psql -h <host> -p <port> -U <user> -d <db>

/var/lib/pgsql/10/data/pg_hba.conf인증 방법을으로 변경하려면 업데이트 하십시오 cert. 자세한 내용은 다음 링크를 확인하십시오.

https://www.postgresql.org/docs/9.1/auth-pg-hba-conf.html


자체 서명 된 postgres 인스턴스에 대한 모든 파일을 제공하는 데 유용한 다음 옵션을 찾았습니다.

psql "host={hostname} sslmode=prefer sslrootcert={ca-cert.pem} sslcert={client-cert.pem} sslkey={client-key.pem} port={port} user={user} dbname={db}"

참고 URL : https://stackoverflow.com/questions/14021998/using-psql-to-connect-to-postgresql-in-ssl-mode

반응형