PostgreSQL사용에 대한 기본 지원SSL보안 향상을 위해 클라이언트/서버 통신을 암호화하기위한 연결. 이것은 필요합니다OpenSSL클라이언트와 서버 시스템 모두에 설치되고 해당 지원PostgreSQL빌드 시간에 활성화되어 있습니다 (참조17 장).
용어SSLandTLSa를 사용하여 보안 암호화 된 연결을 의미하기 위해 상호 교환 적으로 사용됩니다TLS프로토콜.SSL프로토콜은 전구체입니다TLS프로토콜 및 용어SSL그러나 여전히 암호화 된 연결에 여전히 사용됩니다SSL프로토콜이 더 이상 지원되지 않습니다.SSLTLSinPostgreSQL.
withSSL지원 컴파일,PostgreSQL서버를 사용하여 암호화 된 연결을 지원하여 서버를 시작할 수 있습니다TLS매개 변수를 설정하여 활성화 된 프로토콜SSLtoon
inpostgresql.conf
. 서버는 정상과를 모두 듣습니다.SSL동일한 TCP 포트의 연결 및 사용 여부에 대해 연결 클라이언트와 협상 할 것입니다SSL. 기본적으로 이것은 클라이언트의 옵션입니다. 보다섹션 20.1사용해야 할 서버를 설정하는 방법SSL일부 또는 모든 연결의 경우
시작하려면SSL모드, 서버 토토 핫와 개인 키가 포함 된 파일이 있어야합니다. 기본적 으로이 파일은 명명 될 것으로 예상Server.crt
andServer.key
14876_15008SSL_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구성 파일. 기본적 으로이 파일은입니다.OpenSSL.CNF
OpenSSL 버전 -D
. 이 기본값은 환경 변수를 설정하여 재정의 할 수 있습니다OpenSSL_CONF
원하는 구성 파일의 이름으로.
OpenSSL다양한 강도의 광범위한 암호 및 인증 알고리즘을 지원합니다. 암호 목록은에 지정할 수 있습니다.OpenSSL구성 파일, 수정하여 데이터베이스 서버에서 사용하기 위해 특별히 암호를 지정할 수 있습니다SSL_CIPHERSinpostgresql.conf
.
사용하여 암호화 오버 헤드없이 인증을 가질 수 있습니다Null-Sha
또는NULL-MD5
암호. 그러나 중간에 사람은 클라이언트와 서버 간의 통신을 읽고 통과 할 수 있습니다. 또한 인증 오버 헤드에 비해 암호화 오버 헤드가 최소화됩니다. 이러한 이유로 Null 암호는 권장되지 않습니다.
고객이 신뢰할 수있는 토토 핫를 제공하도록 요구하려면 루트 토토 핫 당국의 토토 핫를 배치하십시오 (CAs) 데이터 디렉토리의 파일을 신뢰하고 매개 변수를 설정SSL_CA_FILEinpostgresql.conf
새 파일 이름으로 인증 옵션을 추가하십시오ClientCert = Verify-CA
또는19999_20023
적절한hostssl
라인 (S) inPG_HBA.conf
. 그런 다음 SSL 연결 시작 중에 클라이언트에게 인증서를 요청합니다. (보다범퍼카 토토 : 문서 : 개발 : 32.19. SSL 지원클라이언트에서 토토 핫를 설정하는 방법에 대한 설명.)
ahostssl
입장ClientCert = Verify-CA
, 서버는 고객의 토토 핫가 신뢰할 수있는 토토 핫 중 하나에 의해 서명되었는지 확인합니다. 만약에clientCert = verify-full
지정되어 있으면 서버는 인증 체인을 확인할뿐만 아니라 사용자 이름이나 매핑이와 일치하는지 확인합니다.CN
20837_20949cert
인증 방법이 사용됩니다 (참조PostgreSQL : 문서 : 개발 : 20.12. 사설 토토 사이트 인증).
기존 루트 인증서에 체인하는 중간 인증서SSL_CA_FILE클라이언트에 저장하지 않으려는 경우 파일 (루트 및 중간 인증서가 생성되었다고 가정합니다V3_CA
확장). 인증서 취소 목록 (CRL) 항목도 매개 변수을 확인합니다.SSL_CRL_FILE또는SSL_CRL_DIR설정되었습니다.
theClientCert
인증 옵션은 모든 인증 방법에 사용할 수 있지만PG_HBA.conf
로 지정된 줄hostssl
. 언제ClientCert
지정되지 않으면 서버는 클라이언트 인증서가 제시되고 CA가 구성된 경우에만 CA 파일에 대한 클라이언트 인증서를 확인합니다..
로그인하는 동안 사용자가 토토 핫를 제공한다는 두 가지 접근 방식이 있습니다.
첫 번째 접근 방식은를 사용합니다.cert
인증 방법hostssl
출품작PG_HBA.conf
, 인증서 자체가 인증에 사용되면서 SSL 연결 보안을 제공합니다. 보다PostgreSQL : 문서 : 개발 : 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명령, 교체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.crt
andServer.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.crt
및Intermediate.crt
인증서 파일 번들에 연결하고 서버에 저장해야합니다.Server.key
서버에 저장해야합니다.root.crt
클라이언트에 저장되어 클라이언트가 서버의 리프 토토 핫가 신뢰할 수있는 루트 토토 핫에 연결된 일련의 토토 핫로 서명되었는지 확인할 수 있습니다.root.key
및Intermediate.key
향후 토토 핫 생성에 사용하기 위해 오프라인으로 저장해야합니다.