programing

psql을 사용하여 Postgre에 연결SSL 모드의 SQL

instargram 2023. 5. 27. 09:38
반응형

psql을 사용하여 Postgre에 연결SSL 모드의 SQL

Postgre에 대한 SSL 인증서를 구성하려고 합니다.SQL 서버.데이터 디렉토리에 인증서 파일(server.crt)과 키(server.key)를 작성하고 매개 변수 SSL을 "on"으로 업데이트하여 보안 연결을 사용하도록 설정했습니다.

나는 서버만 클라이언트 측의 서버 인증서로 인증되고 서버 측의 클라이언트 인증은 필요하지 않습니다.나는 psql을 클라이언트로 사용하여 명령을 연결하고 실행하고 있습니다.

나는 Postgre를 사용하고 있습니다.SQL 8.4 및 리눅스.다음 명령을 사용하여 SSL이 사용 가능한 서버에 연결하려고 했습니다.

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

하지만 나는 받고 있습니다.

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

여기서 뭐가 잘못됐어요?SSL 모드를 사용하도록 설정한 서버에 연결하려는 방법이 올바른가요?클라이언트가 아닌 서버만 인증해도 괜찮습니까?

psql9.2 이하에서는 옵션에 대해 이 URL과 같은 구문을 사용할 수 없습니다.

SSL의 사용은 다음을 통해 주도될 수 있습니다.sslmode=value명령줄 또는 PGSLMODE 환경 변수의 옵션(기본값은preferSSL 연결은 아무 것도 지정하지 않고 자동으로 먼저 시도됩니다.

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

Azure의 관리되는 Postgres 데이터베이스에 안전하게 연결하기 위한 또 다른 예:

psql --file=product_data.sql --host=hostname.postgres.database.azure.com --port=5432 \
--username=postgres@postgres-esprit --dbname=product_data \
--set=sslmode=verify-full --set=sslrootcert=/opt/ssl/BaltimoreCyberTrustRoot.crt.pem

SSL 모드에서 연결이 필요한 경우 CLI에서 다음 명령을 사용하여 모든 정보를 제공할 수 있습니다.

psql "sslmode=verify-ca sslrootcert=server-ca.pem sslcert=client-cert.pem sslkey=client-key.pem hostaddr=your_host port=5432 user=your_user dbname=your_db" 

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

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

psql 클라이언트 v12에서 psql 클라이언트에서 활성화할 옵션을 찾을 수 없습니다.sslmode=verify-full.

저는 결국 환경 변수를 사용하게 되었습니다.

PGSSLMODE=verify-full PGSSLROOTCERT=server-ca.pem psql -h your_host -U your_user -W -d your_db

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

v8과 함께 작동한 또 다른 패턴은

psql -h host_name -p port -U user_name "dbname=db sslmode=db"

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

반응형