젠 토토 : 문서 : 9.6 : 젠 토토 | |||
---|---|---|---|
PostgreSQL : 문서 : 9.6 : 무지개 토토 옵션 | 롤 토토 : 문서 : 9.6 : 서버 설정 및 작동 | 18 장 서버 설정 및 작동 | PostgreSQL : 문서 : 9.6 : SSH 터널로 TCP/IP 메이저 토토 사이트을 보호 |
PostgreSQL사용에 대한 기본 지원이 있습니다SSL보안 강화를 위해 클라이언트/서버 통신 암호화에 대한 사설 토토. 이것은 필요합니다OpenSSL클라이언트 및 서버 시스템 모두에 설치되고 해당 지원PostgreSQLis enabled at build time (see16 장).
withSSL지원 컴파일,postgresql서버를 시작할 수 있습니다SSL매개 변수를 설정하여 활성화SSLtooninpostgresql.conf. 서버는 정상과를 모두 듣습니다.SSL동일한 TCP 포트의 사설 토토 및 사용 여부에 대해 사설 토토 클라이언트와 협상 할 것입니다SSL. 기본적으로 이것은 클라이언트의 옵션입니다. 보다섹션 20.1사용이 필요한 서버를 설정하는 방법SSL일부 또는 모든 사설 토토의 경우
PostgreSQL시스템 전체를 읽습니다OpenSSL구성 파일. 기본적 으로이 파일은입니다.OpenSSL.CNFOpenSSL 버전 -D. 이 기본값은 환경 변수를 설정하여 재정의 할 수 있습니다OpenSSL_CONF원하는 구성 파일의 이름으로.
OpenSSL다양한 강도의 광범위한 암호 및 인증 알고리즘을 지원합니다. 암호 목록은에 지정할 수 있습니다.OpenSSL구성 파일, 수정하여 데이터베이스 서버에서 사용하기 위해 특별히 암호를 지정할 수 있습니다SSL_CIPHERSinpostgresql.conf.
참고 :사용하여 암호화 오버 헤드없이 인증을 가질 수 있습니다Null-Sha또는NULL-MD5암호. 그러나 중간에 사람은 클라이언트와 서버 간의 통신을 읽고 통과 할 수 있습니다. 또한 인증 오버 헤드에 비해 암호화 오버 헤드가 최소화됩니다. 이러한 이유로 Null 암호는 권장되지 않습니다.
시작하려면SSL모드, 서버 인증서와 개인 키가 포함 된 파일이 있어야합니다. 기본적 으로이 파일은 명명 될 것으로 예상server.crtandserver.key각각 서버의 데이터 디렉토리에서 구성하지만 구성 매개 변수를 사용하여 다른 이름과 위치를 지정할 수 있습니다SSL_CERT_FILEandssl_key_file.
On Unix systems, the permissions onserver.key세계 또는 그룹에 대한 접근을 허용하지 않아야합니다. 명령으로 이것을 달성사설 토토MOD 0600 Server.key. 또는 파일은 루트가 소유 할 수 있으며 Group Read Access (즉,0640permissions). That setup is intended for installations where certificate and key files are managed by the operating system. The user under which thePostgreSQL서버 실행은 해당 인증서 및 키 파일에 액세스 할 수있는 그룹 구성원이되어야합니다.
개인 키가 암호로 보호되는 경우 서버는 암호를 자랑하고 입력 될 때까지 시작되지 않습니다..
첫 번째 인증서Server.crt서버의 개인 키와 일치해야하므로 서버의 인증서 여야합니다. 의 증명서"intermediate"인증 기관도 파일에 추가 될 수 있습니다. 이렇게하면 루트 및 중간 인증서가로 작성되었다고 가정 할 때 중간 인증서를 클라이언트에 저장할 필요가 없습니다.V3_CA확장. (이것은 인증서의 기본 제약 조건을 설정합니다CAtotrue.) 이것은 중간 증명서를보다 쉽게 만료 할 수 있습니다.
루트 인증서를 추가 할 필요는 없습니다Server.crt. 대신 클라이언트는 서버 인증 체인의 루트 인증서를 가져야합니다.
고객이 신뢰할 수있는 인증서를 제공하도록 요구하려면 루트 인증서 당국의 인증서를 배치하십시오 (CAs) 데이터 디렉토리의 파일을 신뢰하고 매개 변수를 설정SSL_CA_FILEinpostgresql.conf새 파일 이름으로 인증 옵션을 추가하십시오ClientCert = 1적절한hostssl라인 inpg_hba.conf. 그런 다음 SSL 연결 시작 중에 클라이언트에게 인증서를 요청합니다. (보다사설 토토 PostgreSQL : 문서 : 9.6 : SSL 지원클라이언트에서 인증서를 설정하는 방법에 대한 설명은 서버가 클라이언트의 인증서가 신뢰할 수있는 인증서 중 하나에 의해 서명되었는지 확인합니다.
기존 루트 인증서까지 체인되는 중간 인증서 파일에도 나타날 수 있습니다root.crt클라이언트에 저장을 피하려면 (루트 및 중간 인증서가 생성되었다고 가정하면V3_CA확장). 인증서 취소 목록 (CRL) 항목도 매개 변수을 확인합니다.SSL_CRL_FILE설정되었습니다.
theClientCert인증 옵션은 모든 인증 방법에 사용할 수 있지만pg_hba.conf로 지정된 줄hostssl. 언제ClientCert는 지정되지 않았거나 0으로 설정되어 있지 않으면 서버는 CA 파일에 대해 제시된 클라이언트 인증서를 확인한 경우에도 여전히 클라이언트 인증서를 제시 할 것을 주장하지 않습니다..
클라이언트 인증서를 설정하는 경우를 사용할 수 있습니다.cert인증 방법, 인증서가 사용자 인증을 제어하고 사설 토토 보안을 제공하도록합니다. 보다섹션 20.3.9자세한 내용. (지정할 필요가 없습니다ClientCert = 1명시 적으로certauthentication method.)
Table 18-2summarizes the files that are relevant to the SSL setup on the server. (The shown file names are default or typical names. The locally configured names could be different.)
표 18-2. SSL 서버 파일 사용
파일 | 내용 | 효과 |
---|---|---|
SSL_CERT_FILE($ pgdata/server.crt) | 서버 인증서 | 서버의 ID를 표시하기 위해 클라이언트에게 보냈습니다 |
ssl_key_file($ pgdata/server.key) | 서버 개인 키 | proves server certificate was sent by the owner; does not indicate certificate owner is trustworthy |
ssl_ca_file($ pgdata/root.crt) | 신뢰할 수있는 인증서 | 신뢰할 수있는 인증서에 의해 고객 인증서가 서명되었는지 확인 |
SSL_CRL_FILE($ pgdata/root.crl) | 인증서 당국이 취소 한 인증서 | 클라이언트 인증서는이 목록에 있어야합니다 |
파일Server.key, Server.crt, root.crt및root.crl(또는 구성된 대체 이름)는 서버 시작 중에 만 검사됩니다. 따라서 변경 사항이 변경되도록 서버를 다시 시작해야합니다.
365 일 동안 유효한 서버에 대한 간단한 자체 서명 인증서를 만들려면 다음을 사용하십시오OpenSSL명령, 교체dbhost.yourdomain.com서버 호스트 이름 :
OpenSSL REQ -New -X509 -Days 365 -Nodes -Text -out Server.crt \ -keyout server.key -subj "/cn =dbhost.yourdomain.com"
그런 다음 :
CHMOD OG-RWX Server.key
권한이 이것보다 더 자유 롭다면 서버가 파일을 거부하기 때문에. 서버 개인 키 및 인증서를 만드는 방법에 대한 자세한 내용은를 참조하십시오.OpenSSL문서.
자체 서명 인증서는 테스트에 사용될 수 있지만 인증 기관이 서명 한 인증서 (CA) (일반적으로 엔터프라이즈 전역의 루트CA) 생산에 사용해야합니다.
클라이언트가 신원을 검증 할 수있는 서버 인증서를 작성하려면 먼저 인증서 서명 요청을 만듭니다 (CSR) 및 공개/개인 키 파일 :
OpenSSL Req -New -Nodes -text -out root.csr \ -keyout root.key -subj "/cn =root.yourdomain.com" chmod og-rwx root.key
그런 다음 루트 인증 기관을 만들기 위해 키와 함께 요청에 서명하십시오 (기본값 사용OpenSSL구성 파일 위치Linux) :
OpenSSL x509 -req -in root.csr -text -days 3650 \ -extfile /etc/ssl/openssl.cnf -extensions v3_ca \ -signkey root.key -out root.crt
마지막으로 새 루트 인증서에 의해 서명 된 서버 인증서 작성 :
OpenSSL REQ -New -Nodes -text -out Server.csr \ -keyout server.key -subj "/cn =dbhost.yourdomain.com" chmod og-rwx server.key OpenSSL x509 -req -in server.csr -text -days 365 \ -ca root.crt -cakey root.key -cacreateserial \ -out server.crt
server.crtandServer.keyshould be stored on the server, androot.crt클라이언트에 저장되어 클라이언트가 서버의 리프 인증서가 신뢰할 수있는 루트 인증서로 서명했는지 확인할 수 있습니다.root.keyshould be stored offline for use in creating future certificates.
중간 인증서를 포함하는 신뢰 체인을 만들 수도 있습니다.
# 루트 OpenSSL req -new -nodes -text -out root.csr \ -keyout root.key -subj "/cn =root.yourdomain.com" chmod og-rwx root.key openssl x509 -req -in root.csr -text -days 3650 \ -extfile /etc/ssl/openssl.cnf -extensions v3_ca \ -signkey root.key -out root.crt # intermediate openssl req -new -nodes -text -out intermediate.csr \ -keyout intermediate.key -subj "/CN=intermediate.yourdomain.com" CHMOD OG-RWX Intermediate.key OpenSSL x509 -req -in intermediate.csr -text -days 1825 \ -extfile /etc/ssl/openssl.cnf -extensions v3_ca \ -ca root.crt -cakey root.key -cacreateserial \ -out intermediate.crt # 잎 OpenSSL Req -New -Nodes -text -out server.csr \ -keyout server.key -subj "/cn =dbhost.yourdomain.com" chmod og-rwx server.key OpenSSL x509 -req -in server.csr -text -days 365 \ -ca intermediate.crt -cakey intermediate.key -cacreateserial \ -out server.crt
Server.crtandIntermediate.crt인증서 파일 번들에 연결되어 서버에 저장해야합니다.Server.key서버에 저장해야합니다.root.crt클라이언트에 저장되어 클라이언트가 서버의 리프 인증서가 신뢰할 수있는 루트 인증서에 사설 토토된 일련의 인증서로 서명되었는지 확인할 수 있습니다.root.key및Intermediate.keyshould be stored offline for use in creating future certificates.
이전 | 젠 토토 : 문서 : 9.6 : 젠 토토 9.6.24 문서화 | PostgreSQL : 문서 : 9.6 : SSH 터널로 TCP/IP 메이저 토토 사이트을 보호 |
암호화 옵션 | 롤 토토 : 문서 : 9.6 : 서버 설정 및 작동 | 보안 TCP/IP 사설 토토SSH터널 |