이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다배트맨 토토 PostgreSQL : 문서 : 17 : 18.9. SSL로 TCP/IP 연결 보안버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

18.9. SSL로 TCP/IP 연결 보안

PostgreSQL사용에 대한 기본 지원SSL보안 강화를 위해 클라이언트/서버 통신 암호화에 대한 연결. 이것은 필요합니다OpenSSL클라이언트 및 서버 시스템 모두에 설치되고 해당 지원postgresql빌드 시간에 활성화되어 있습니다 (참조16 장).

withSSL지원 컴파일,PostgreSQL서버를 시작할 수 있습니다SSL매개 변수를 설정하여 활성화SSLtooninpostgresql.conf. 서버는 정상과를 모두 듣습니다.SSL동일한 TCP 포트의 연결 및 사용 여부에 대해 연결 클라이언트와 협상 할 것입니다SSL. 기본적으로 이것은 클라이언트의 옵션입니다. 보다섹션 20.1사용해야 할 서버를 설정하는 방법SSL일부 또는 모든 연결의 경우

PostgreSQL시스템 전체를 읽습니다OpenSSL구성 파일. 기본적 으로이 파일은입니다.OpenSSL.CNFOpenSSL 버전 -D. 이 기본값은 환경 변수를 설정하여 재정의 할 수 있습니다OpenSSL_CONF원하는 구성 파일의 이름으로.

OpenSSL다양한 강도의 광범위한 암호 및 인증 알고리즘을 지원합니다. 암호 목록은에 지정할 수 있습니다.OpenSSL구성 파일, 수정하여 데이터베이스 서버에서 사용하기 위해 특별히 암호를 지정할 수 있습니다SSL_CIPHERSinpostgresql.conf.

note

사용하여 암호화 오버 헤드없이 인증을 가질 수 있습니다Null-Sha또는NULL-MD5암호. 그러나 중간에 사람은 클라이언트와 서버 간의 통신을 읽고 통과 할 수 있습니다. 또한 인증 오버 헤드에 비해 암호화 오버 헤드가 최소화됩니다. 이러한 이유로 Null 암호는 권장되지 않습니다.

시작하려면SSL모드, 서버 스포츠 토토와 개인 키가 포함 된 파일이 있어야합니다. 기본적 으로이 파일은 명명 될 것으로 예상Server.crtandServer.key각각 서버의 데이터 디렉토리에서 구성 매개 변수를 사용하여 다른 이름과 위치를 지정할 수 있습니다SSL_CERT_FILEandssl_key_file.

UNIX 시스템에서 권한Server.key세계 또는 그룹에 대한 접근을 허용하지 않아야합니다. 명령으로 이것을 달성CHMOD 0600 Server.key. 또는 파일은 루트가 소유 할 수 있으며 Group Read Access (즉,0640권한). 이 설정은 운영 체제에서 인증서 및 키 파일을 관리하는 설치를위한 것입니다.PostgreSQL서버 실행은 해당 스포츠 토토 및 키 파일에 액세스 할 수있는 그룹 구성원이되어야합니다.

개인 키가 암호로 보호되는 경우 서버는 암호를 자랑하고 입력 될 때까지 시작되지 않습니다. 암호를 사용하면 서버가 다시 시작하지 않고 서버의 SSL 구성을 변경하는 기능도 비활성화됩니다. 또한 Windows에서는 PassPhrase로 보호 된 개인 키를 전혀 사용할 수 없습니다.

첫 번째 스포츠 토토Server.crt서버의 개인 키와 일치해야하므로 서버의 스포츠 토토 여야합니다. 의 증명서중간인증 기관도 파일에 추가 될 수 있습니다. 이렇게하면 루트 및 중간 인증서가로 작성되었다고 가정 할 때 중간 인증서를 클라이언트에 저장할 필요가 없습니다.V3_CA확장. (이것은 스포츠 토토의 기본 제약 조건을 설정합니다CAtotrue.) 이것은 중간 증명서를보다 쉽게 ​​만료 할 수 있습니다.

루트 스포츠 토토를 추가 할 필요는 없습니다Server.crt. 대신 클라이언트는 서버 인증 체인의 루트 스포츠 토토를 가져야합니다.

18.9.1. 클라이언트 인증서 사용

고객이 신뢰할 수있는 스포츠 토토를 제공하도록 요구하려면 루트 스포츠 토토 당국의 스포츠 토토를 배치하십시오 (CAs) 데이터 디렉토리의 파일을 신뢰하고 매개 변수를 설정SSL_CA_FILEinpostgresql.conf새 파일 이름으로 인증 옵션을 추가하십시오ClientCert = 1적절한hostssl라인 inPG_HBA.conf. 그런 다음 SSL 연결 시작 중에 클라이언트에게 인증서를 요청합니다. (보다토토 꽁 머니 : 문서 : 10 : 33.18. SSL 지원클라이언트에서 스포츠 토토를 설정하는 방법에 대한 설명은 서버가 클라이언트의 스포츠 토토가 신뢰할 수있는 스포츠 토토 중 하나에 의해 서명되었는지 확인합니다..

기존 루트 인증서까지 체인하는 중간 인증서 파일에도 나타날 수 있습니다root.crt클라이언트에 저장을 피하려면 (루트 및 중간 인증서가 생성되었다고 가정하면V3_CA확장). 인증서 취소 목록 (CRL) 항목도 매개 변수을 확인합니다.SSL_CRL_FILE가 설정되었습니다.

theClientCert인증 옵션은 모든 인증 방법에 사용할 수 있지만pg_hba.conf로 지정된 줄hostssl. 언제ClientCert는 지정되지 않았거나 0으로 설정되어 있지 않으면 서버는 CA 파일에 대해 제시된 클라이언트 인증서를 확인한 경우에도 여전히 클라이언트 인증서를 제시 할 수 없다고 주장하지 않습니다..

클라이언트 스포츠 토토를 설정하는 경우를 사용할 수 있습니다.cert인증 방법, 스포츠 토토가 사용자 인증을 제어하고 연결 보안을 제공하도록합니다. 보다섹션 20.3.9자세한 내용. (지정할 필요가 없습니다ClientCert = 1명시 적으로 사용할 때cert인증 방법)

18.9.2. SSL 서버 파일 사용

표 18.2서버의 SSL 설정과 관련된 파일을 요약합니다. (표시된 파일 이름은 기본적이거나 일반적인 이름입니다. 로컬로 구성된 이름은 다를 수 있습니다.)

표 18.2. SSL 서버 파일 사용

파일 내용 효과
SSL_CERT_FILE($ pgdata/server.crt) 서버 스포츠 토토 서버의 ID를 표시하기 위해 클라이언트에게 전송
ssl_key_file($ pgdata/server.key) 서버 개인 키 서버 스포츠 토토가 소유자가 전송했음을 증명합니다. 인증서 소유자가 신뢰할 수 있음을 나타내지 않습니다
SSL_CA_FILE($ pgdata/root.crt) 신뢰할 수있는 스포츠 토토 신뢰할 수있는 스포츠 토토에 의해 고객 인증서가 서명되었는지 확인
SSL_CRL_FILE($ pgdata/root.crl) 스포츠 토토 당국이 취소 한 스포츠 토토 클라이언트 스포츠 토토는이 목록에 있어야합니다

서버는 서버 시작과 서버 구성이 다시로드 될 때 마다이 파일을 읽습니다. 에Windows시스템, 새로운 클라이언트 연결을 위해 새 백엔드 프로세스가 생성 될 때마다 다시 읽습니다.

서버 시작시 이러한 파일의 오류가 감지되면 서버가 시작을 거부합니다. 그러나 구성 재 장전 중에 오류가 감지되면 파일이 무시되고 이전 SSL 구성이 계속 사용됩니다. 에Windows시스템,이 파일의 오류가 백엔드 시작에서 감지되면 해당 백엔드는 SSL 연결을 설정할 수 없습니다. 이 모든 경우에 오류 조건은 서버 로그 에보 고됩니다.

18.9.3. 인증서 만들기

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.key서버에 저장해야하며root.crt클라이언트에 저장되어 클라이언트가 서버의 리프 스포츠 토토에 신뢰할 수있는 루트 스포츠 토토에 서명되었는지 확인할 수 있습니다.root.key향후 스포츠 토토 생성에 사용하기 위해 오프라인으로 저장해야합니다.

중간 인증서를 포함하는 신뢰 체인을 만들 수도 있습니다.

# 루트
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

# 중간
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.keyandIntermediate.key향후 스포츠 토토 생성에 사용하기 위해 오프라인으로 저장해야합니다.