PostgreSQL사용에 대한 기본 지원SSL보안 강화를 위해 클라이언트/서버 통신 암호화에 대한 연결. 이것은 필요합니다OpenSSL클라이언트와 서버 시스템 모두에 설치되고 해당 지원PostgreSQL빌드 시간에 활성화되어 있습니다 (참조17 장).
용어SSLandTLSa를 사용하여 보안 암호화 된 연결을 의미하기 위해 상호 교환 적으로 사용됩니다TLS프로토콜.SSL프로토콜은의 선구자입니다.TLS프로토콜 및 용어SSL그러나 여전히 암호화 된 연결에 여전히 사용됩니다SSL프로토콜이 더 이상 지원되지 않습니다.SSL|TLSinPostgreSQL.
withSSL지원 컴파일,PostgreSQL서버를 사용하여 암호화 된 연결을 지원하여 서버를 시작할 수 있습니다TLS매개 변수를 설정하여 활성화 된 프로토콜SSLtoon
inon
. 서버는 정상과를 모두 듣습니다.SSL동일한 TCP 포트의 연결 및 사용 여부에 대해 연결 클라이언트와 협상 할 것입니다SSL. 기본적으로 이것은 클라이언트의 옵션입니다.섹션 20.1사용해야 할 서버를 설정하는 방법SSL일부 또는 모든 연결의 경우
시작하려면SSL모드, 서버 배트맨 토토와 개인 키가 포함 된 파일이 있어야합니다. 기본적 으로이 파일은 명명 될 것으로 예상server.crt
andserver.key
14109_14238SSL_CERT_FILEandssl_key_file.
UNIX 시스템에서 권한server.key
세계 또는 그룹에 대한 접근을 허용하지 않아야합니다. 명령으로 이것을 달성CHMOD 0600 Server.key
. 또는 파일은 루트가 소유 할 수 있으며 Group Read Access (즉,0640
권한). 이 설정은 운영 체제에서 인증서 및 키 파일을 관리하는 설치를위한 것입니다.PostgreSQL서버 실행은 해당 배트맨 토토 및 키 파일에 액세스 할 수있는 그룹 구성원이되어야합니다.
데이터 디렉토리에서 그룹 읽기 액세스를 허용하는 경우 위에서 설명한 보안 요구 사항을 준수하려면 배트맨 토토 파일이 데이터 디렉토리 외부에 위치해야 할 수 있습니다. 일반적으로 그룹 액세스는 비전지가없는 사용자가 데이터베이스를 백업 할 수 있도록 할 수 있으며,이 경우 백업 소프트웨어는 배트맨 토토 파일을 읽을 수 없으며 오류가 발생할 수 있습니다..
개인 키가 암호로 보호되는 경우 서버는 암호를 자랑하고 입력 될 때까지 시작되지 않습니다. 기본적으로 암호를 사용하면 서버 재시작없이 서버의 SSL 구성을 변경하는 기능이 비활성화되지만 참조ssl_passphrase_command_supports_reload. 또한 Windows에서는 PassPhrase로 보호 된 개인 키를 전혀 사용할 수 없습니다.
첫 번째 배트맨 토토server.crt
서버의 개인 키와 일치해야하므로 서버의 배트맨 토토 여야합니다. 의 증명서“중간”인증 기관도 파일에 추가 될 수 있습니다. 이렇게하면 루트 및 중간 인증서가로 작성되었다고 가정 할 때 중간 인증서를 클라이언트에 저장할 필요가 없습니다.V3_CA
확장. (이것은 배트맨 토토의 기본 제약 조건을 설정합니다CA
totrue
.) 이것은 중간 증명서를보다 쉽게 만료 할 수 있습니다.
루트 배트맨 토토를 추가 할 필요는 없습니다server.crt
. 대신 클라이언트는 서버 인증 체인의 루트 배트맨 토토를 가져야합니다.
PostgreSQL시스템 전체를 읽습니다OpenSSL구성 파일. 기본적 으로이 파일은입니다.SSL
OpenSSL 버전 -D
. 이 기본값은 환경 변수를 설정하여 재정의 할 수 있습니다OpenSSL_CONF
원하는 구성 파일의 이름으로.
OpenSSL다양한 강도의 광범위한 암호 및 인증 알고리즘을 지원합니다. 암호 목록은에 지정할 수 있습니다.OpenSSL구성 파일, 수정하여 데이터베이스 서버에서 사용하기 위해 특별히 암호를 지정할 수 있습니다SSL_CIPHERSinon
.
사용하여 암호화 오버 헤드없이 인증을 가질 수 있습니다Null-Sha
또는NULL-MD5
암호. 그러나 중간에 사람은 클라이언트와 서버 간의 통신을 읽고 통과 할 수 있습니다.
고객이 신뢰할 수있는 배트맨 토토를 제공하도록 요구하려면 루트 배트맨 토토 당국의 배트맨 토토를 배치하십시오 (CAs) 데이터 디렉토리의 파일을 신뢰하고 매개 변수를 설정SSL_CA_FILEinon
새 파일 이름으로 인증 옵션을 추가하십시오ClientCert = Verify-CA
또는clientCert = verify-full
적절한hostssl
in inon
. 그런 다음 SSL 연결 시작 중에 클라이언트에게 인증서를 요청합니다.토토 베이 : 문서 : 17 : 32.19. SSL 지원클라이언트에서 배트맨 토토를 설정하는 방법에 대한 설명.)
ahostssl
입장ClientCert = Verify-CA
, 서버는 고객의 배트맨 토토가 신뢰할 수있는 배트맨 토토 중 하나가 서명했는지 확인합니다. 만약에clientCert = verify-full
지정되어 있으면 서버는 인증 체인을 확인할뿐만 아니라 사용자 이름이나 매핑이와 일치하는지 확인합니다.CN
18200_18308cert
인증 방법이 사용됩니다 (참조PostgreSQL : 문서 : 17 : 20.12. 토토 결과 인증).
기존 루트 인증서에 체인하는 중간 인증서SSL_CA_FILE클라이언트에 저장하지 않으려는 경우 파일 (루트 및 중간 인증서가 생성되었다고 가정합니다V3_CA
확장). 인증서 취소 목록 (CRL) 항목도 매개 변수을 확인합니다.SSL_CRL_FILE또는SSL_CRL_DIR가 설정되었습니다.
theClientCert
인증 옵션은 모든 인증 방법에 사용할 수 있지만on
로 지정된 줄hostssl
. 언제ClientCert
지정되지 않은 경우, 서버는 클라이언트 인증서가 제시되고 CA가 구성된 경우에만 CA 파일에 대한 클라이언트 인증서를 확인합니다..
로그인하는 동안 사용자가 배트맨 토토를 제공한다는 두 가지 접근 방식이 있습니다.
첫 번째 접근법은를 사용합니다.cert
인증 방법hostssl
출품작on
, 인증서 자체가 인증에 사용되면서 SSL 연결 보안을 제공합니다. 보다PostgreSQL : 문서 : 17 : 20.12. 토토 결과 인증자세한 내용. (어떤 것을 지정할 필요는 없습니다ClientCert
옵션을 사용할 때 명시 적으로 옵션cert
인증 방법.)이 경우CN
(공통 이름) 인증서에 제공된 사용자 이름 또는 해당 매핑에 대해 확인됩니다.
두 번째 접근법은에 대한 인증 방법을 결합합니다.hostssl
설정하여 클라이언트 배트맨 토토 확인이있는 항목ClientCert
인증 옵션verify-ca
또는verify-full
. 전자 옵션은 배트맨 토토가 유효하다는 것을 강요하는 반면, 후자는CN
(공통 이름) 인증서의 사용자 이름 또는 해당 매핑과 일치합니다.
표 18.2서버의 SSL 설정과 관련된 파일을 요약합니다. (표시된 파일 이름은 기본 이름입니다. 로컬로 구성된 이름은 다를 수 있습니다.)
표 18.2. SSL 서버 파일 사용
파일 | 내용 | 효과 |
---|---|---|
SSL_CERT_FILE ($ pgdata/server.crt ) |
서버 배트맨 토토 | 서버의 ID를 표시하기 위해 클라이언트에게 보냈습니다 |
ssl_key_file ($ pgdata/server.key ) |
서버 개인 키 | 서버 배트맨 토토가 소유자가 전송했음을 증명합니다. 인증서 소유자가 신뢰할 수 있음을 나타내지 않습니다 |
SSL_CA_FILE | 신뢰할 수있는 배트맨 토토 | 신뢰할 수있는 배트맨 토토에 의해 고객 인증서가 서명되었는지 확인 |
SSL_CRL_FILE | 배트맨 토토 당국이 취소 한 배트맨 토토 | 클라이언트 배트맨 토토는이 목록에 있지 않아야합니다 |
서버는 서버 시작과 서버 구성이 다시로드 될 때 마다이 파일을 읽습니다. 에Windows시스템, 새로운 클라이언트 연결을 위해 새 백엔드 프로세스가 생성 될 때마다 다시 읽습니다.
서버 시작 에서이 파일의 오류가 감지되면 서버가 시작을 거부합니다. 그러나 구성 재 장전 중에 오류가 감지되면 파일이 무시되고 이전 SSL 구성이 계속 사용됩니다.Windows시스템, 백엔드 시작시 이러한 파일의 오류가 감지되면 해당 백엔드는 SSL 연결을 설정할 수 없습니다. 이 모든 경우에 오류 조건은 서버 로그 에보 고됩니다.
365 일 동안 유효한 서버에 대한 간단한 자체 서명 인증서를 작성하려면 다음을 사용하십시오OpenSSL명령, 교체in
서버 호스트 이름 :
OpenSSL Req -New -X509 -Days 365 -Nodes -Text -out Server.crt \in
"
그런 다음 :
CHMOD OG-RWX Server.key
권한 이이보다 더 자유롭게 서버가 파일을 거부하기 때문에. 서버 개인 키 및 인증서를 만드는 방법에 대한 자세한 내용은를 참조하십시오.OpenSSL문서.
자체 서명 된 배트맨 토토는 테스트에 사용될 수 있지만 인증 기관이 서명 한 배트맨 토토 (CA) (일반적으로 기업 전역의 루트CA) 생산에 사용해야합니다.
클라이언트가 신원을 검증 할 수있는 서버 배트맨 토토를 작성하려면 먼저 인증서 서명 요청을 만듭니다 (CSR) 및 공개/개인 키 파일 :
OpenSSL Req -New -Nodes -text -out root.csr \in
"
그런 다음 키로 요청에 서명하여 루트 인증서 권한을 생성합니다 (기본값 사용OpenSSL구성 파일 위치Linux) :
OpenSSL x509 -req -in root.csr -text -days 3650 \
마지막으로, 새로운 루트 인증서에 의해 서명 된 서버 배트맨 토토 작성 :
OpenSSL REQ -New -Nodes -text -out Server.csr \in
"
server.crt
andserver.key
서버에 저장해야하며root.crt
클라이언트에 저장되어 클라이언트가 서버의 리프 배트맨 토토에 신뢰할 수있는 루트 배트맨 토토에 서명되었는지 확인할 수 있습니다.root.key
향후 배트맨 토토 생성에 사용하기 위해 오프라인으로 저장해야합니다.
중간 증명서를 포함하는 신뢰 체인을 만들 수도 있습니다.
# 루트in
"중간
"in
"
server.crt
and중간
인증서 파일 번들에 연결되어 서버에 저장해야합니다.server.key
서버에 저장해야합니다.root.crt
클라이언트에 저장되어 클라이언트가 서버의 리프 배트맨 토토가 신뢰할 수있는 루트 배트맨 토토에 연결된 일련의 배트맨 토토로 서명했는지 확인할 수 있습니다.root.key
and중간
향후 배트맨 토토 생성에 사용하기 위해 오프라인으로 저장해야합니다.
문서에 맞지 않는 내용이 있으면 일치하지 않습니다.이 양식문서 문제를보고하려면