범퍼카 토토사용에 대한 기본 지원SSL사용을 사용하여 클라이언트/서버 통신을 암호화하기위한 연결TLS보안 증가를위한 프로토콜. 보다섹션 18.9서버 측에 대한 자세한 내용SSL기능.
libpq시스템 전체를 읽습니다OpenSSL구성 파일. 기본적 으로이 파일은입니다.openssl.cnf
OpenSSL 버전 -D
. 이 기본값은 환경 변수를 설정하여 재정의 할 수 있습니다OpenSSL_CONF
원하는 구성 파일의 이름으로.
기본적으로범퍼카 토토서버 인증서 확인을 수행하지 않습니다. 이는 클라이언트가 알지 않고 서버 아이덴티티 (예 : DNS 레코드를 수정하거나 서버 IP 주소를 인수하여)를 스푸핑 할 수 있음을 의미합니다.CA) 하나의 컴퓨터 및 잎 증명서에 대한 인증서서명다른 컴퓨터의 루트 인증서에 의해. 를 사용하는 것도 가능합니다.“중간”루트 인증서 및 서명 잎 증명서에 의해 서명 된 인증서
클라이언트가 서버의 신원을 확인할 수 있도록 클라이언트에 루트 인증서와 서버의 루트 인증서에 서명 한 리프 인증서를 배치하십시오. 서버가 클라이언트의 신원을 확인할 수 있도록 서버에 루트 인증서와 클라이언트에 루트 인증서에 서명 한 리프 인증서를 배치하십시오.
일단 신뢰 체인이 설립되면 클라이언트가 서버가 보낸 리프 인증서를 검증하는 두 가지 방법이 있습니다. 매개 변수 인 경우sslmode
로 설정되었습니다verify-ca
, LIBPQ는 클라이언트에 저장된 루트 인증서까지 인증서 체인을 확인하여 서버가 신뢰할 수 있는지 확인합니다. 만약에sslmode
로 설정되었습니다verify-full
, libpq Will또한서버 호스트 이름이 서버 인증서에 저장된 이름과 일치하는지 확인하십시오. 서버 인증서를 확인할 수없는 경우 SSL 연결이 실패합니다.verify-full
대부분의 보안에 민감한 환경에서 권장됩니다.
inverify-full
모드, 호스트 이름은 인증서의 대체 이름 속성 (S) (SAN) 또는 SAN의 SAN이없는 경우 공통 이름 속성과 일치합니다.dnsname
가 있습니다. 인증서 이름 속성이 별표로 시작하는 경우 (*
), 별표는 와일드 카드로 취급되며 모든 문자와 일치합니다제외A Dot (.
). 이는 인증서가 하위 도메인과 일치하지 않음을 의미합니다.iPaddress
또는dnsname
. 그렇지 않은 경우iPaddress
SAN이 존재하고 일치하지 않습니다dnsname
SAN이 있으며, 호스트 IP 주소는 공통 이름 속성과 일치합니다.
이전 버전의 범퍼카 토토과의 역 호환성을 위해 호스트 IP 주소는와 다른 방식으로 확인됩니다.RFC 6125. 호스트 IP 주소는 항상와 일치합니다.dnsname
산 및iPaddress
SANS, 관련 SAN이 존재하지 않으면 공통 이름 속성과 일치 할 수 있습니다.
서버 인증서 확인을 허용하려면 파일에 하나 이상의 루트 인증서를 배치해야합니다~/.범퍼카 토토/root.crt
사용자의 홈 디렉토리에서. (Microsoft Windows에서 파일은 이름이입니다.%appdata%\ 범퍼카 토토 \ root.crt
.) 서버에서 보낸 인증서 체인을 클라이언트에 저장된 루트 인증서에 링크 해야하는 경우 중간 인증서도 파일에 추가해야합니다.
인증서 취소 목록 (CRL) 항목도 파일이 확인됩니다~/.범퍼카 토토/root.crl
존재 (%appdata%\ 범퍼카 토토 \ root.crl
Microsoft Windows에서).
연결 매개 변수를 설정하여 루트 인증서 파일 및 CRL의 위치를 변경할 수 있습니다SSLROOTCERT
andSSLCRL
또는 환경 변수PGSSLROOTCERT
andpgsslcrl
. sslcrldir
또는 환경 변수pgsslcrldir
CRL 파일을 포함하는 디렉토리를 지정하는 데 사용될 수 있습니다.
이전 버전의 범퍼카 토토과의 거꾸로 호환성을 위해 루트 CA 파일이 존재하면의 동작sslmode = require
verify-ca
, 즉 서버 인증서가 CA에 대해 검증되었습니다. 이 동작에 의존하는 것은 권장되지 않으며 인증서 유효성 검사가 필요한 응용 프로그램은 항상 사용해야합니다verify-ca
또는verify-full
.
서버가 클라이언트의 잎 증명서를 요청하여 클라이언트의 신원을 확인하려고하는 경우libpq파일에 저장된 인증서를 보냅니다~/.범퍼카 토토/범퍼카 토토.crt
사용자의 홈 디렉토리에서. 인증서는 서버가 신뢰하는 루트 인증서로 체인해야합니다.~/.범퍼카 토토/범퍼카 토토.key
도 참석해야합니다. Microsoft Windows 에서이 파일은입니다.%appdata%\ 범퍼카 토토 \ 범퍼카 토토.crt
and%appdata%\ 범퍼카 토토 \ 범퍼카 토토.key
. 인증서 및 키 파일의 위치는 연결 매개 변수에 의해 상환 될 수 있습니다.SSLCERT
andsslkey
또는 환경 변수pgsslcert
andpgsslkey
.
UNIX 시스템에서 개인 키 파일의 권한은 세계 또는 그룹에 대한 액세스를 허용하지 않아야합니다. 와 같은 명령으로 이것을 달성하십시오.Chmod 0600 ~/.범퍼카 토토/범퍼카 토토.key
. 또는 파일은 루트가 소유 할 수 있으며 Group Read Access (즉,0640
권한). 이 설정은 운영 체제에서 인증서 및 키 파일을 관리하는 설치를위한 것입니다.libpq그러면 해당 인증서 및 키 파일에 액세스 할 수있는 그룹 구성원이되어야합니다. (Microsoft Windows에서는이므로 파일 권한 점검이 없습니다.%appdata%\ 범퍼카 토토
디렉토리가 안전하다고 추정됩니다.)
첫 번째 인증서범퍼카 토토.crt
고객의 개인 키와 일치해야하므로 고객의 인증서 여야합니다.“중간”인증서는 선택적으로 파일에 추가 될 수 있습니다. 따라서 서버에서 중간 인증서를 저장 해야하는 것을 피하십시오 (SSL_CA_FILE).
인증서와 키는 PEM 또는 ASN.1 Der 형식에있을 수 있습니다.
키는 ClearText에 저장되거나에서 지원하는 알고리즘을 사용하여 암호로 암호화 될 수 있습니다OpenSSL, AES-128처럼. 키가 암호화 된 상태로 저장되면 암호화가에 제공 될 수 있습니다.sslpassword연결 옵션. 암호화 된 키가 제공되고sslpassword
옵션이 없거나 비어 있으면 비밀번호가 대화식으로 표시됩니다.OpenSSLwithPEM 패스 문구를 입력하십시오 :
tty를 사용할 수있는 경우 프롬프트. 응용 프로그램은 클라이언트 인증서 프롬프트와 처리를 무시할 수 있습니다.sslpassword
자체 키 비밀번호 콜백을 제공하여 매개 변수; 보다PQSETSSLKEYPASSHOOK_OPENSSL
.
인증서 작성에 대한 지침은 참조섹션 18.9.5.
다른 값sslmode
매개 변수는 다른 수준의 보호를 제공합니다. SSL은 세 가지 유형의 공격으로부터 보호를 제공 할 수 있습니다.
제 3자가 클라이언트와 서버 간의 네트워크 트래픽을 검사 할 수 있다면 연결 정보 (사용자 이름과 암호 포함)와 전달 된 데이터를 모두 읽을 수 있습니다..SSL이를 방지하기 위해 암호화를 사용합니다.
제 3자가 클라이언트와 서버를 전달하는 동안 데이터를 수정할 수 있다면 서버 인 척하여 데이터를보고 수정할 수 있습니다암호화 된 경우에도. 그런 다음 제 3자는 연결 정보와 데이터를 원래 서버로 전달 하여이 공격을 감지 할 수 없습니다.SSL서버를 클라이언트에게 인증하여이를 방지하기 위해 인증서 확인을 사용합니다.
제 3자가 승인 된 클라이언트 인 척 할 수 있다면 단순히 액세스 할 수없는 데이터에 액세스 할 수 있습니다. 일반적으로 불안한 암호 관리를 통해 발생할 수 있습니다.SSL유효한 인증서 보유자 만 서버에 액세스 할 수 있는지 확인하여 클라이언트 인증서를 사용하여이를 방지합니다.
알려진 SSL에 대한 연결을 위해서는 SSL 사용법을 구성해야합니다클라이언트와 서버 모두연결하기 전에. 서버에서만 구성된 경우 클라이언트는 서버에 높은 보안이 필요하다는 것을 알기 전에 민감한 정보 (예 : 비밀번호)를 전송 할 수 있습니다.sslmode
매개 변수 toverify-full
또는verify-ca
, 시스템에 루트 인증서를 제공하여 확인할 수 있습니다. 이것은 사용과 유사합니다https
URL암호화 된 웹 브라우징의 경우.
서버가 인증되면 클라이언트는 민감한 데이터를 전달할 수 있습니다. 즉,이 시점까지 클라이언트는 인증에 인증서가 사용되는지 알 필요가 없으므로 서버 구성에서만이를 지정할 수 있습니다..
allSSL옵션은 암호화 및 키 exchange의 형태로 오버 헤드를 전달하므로 성능과 보안 사이에 이루어져야하는 트레이드 오프가 있습니다..표 32.1다른 위험을 설명sslmode
값은 보호 및 보안 및 오버 헤드에 대한 진술을 보호합니다.
표 32.1. SSL 모드 설명
sslmode |
도청 보호 | MITM보호 | 성명서 |
---|---|---|---|
비활성화 |
아니오 | 아니오 | 보안에 관심이 없으며 암호화의 오버 헤드를 지불하고 싶지 않습니다. |
허용 |
어쩌면 | 아니오 | 보안에 관심이 없지만 서버가 주장하면 암호화 오버 헤드를 지불 할 것입니다. |
선호 |
어쩌면 | 아니오 | 나는 암호화에 관심이 없지만 서버가 지원하면 암호화 오버 헤드를 지불하고 싶습니다. |
요구 |
예 | 아니오 | 내 데이터가 암호화되기를 원하고 오버 헤드를 수락합니다. 네트워크가 항상 내가 원하는 서버에 연결할 수 있다고 믿습니다. |
verify-ca |
예 | CA 정책에 따라 | 데이터를 암호화하고 오버 헤드를 수락합니다. 내가 신뢰하는 서버에 연결했는지 확인하고 싶습니다. |
verify-full |
예 | 예 | 데이터를 암호화하고 오버 헤드를 수락합니다. 나는 내가 신뢰하는 서버에 연결하고 그것이 내가 지정한 것입니다. |
의 차이verify-ca
andverify-full
루트의 정책에 따라CA. 대중 인 경우CA사용됩니다.verify-ca
서버에 연결할 수 있습니다.다른 사람에 등록했을 수 있습니다CA. 이 경우verify-full
항상 사용해야합니다. 현지인 경우CA사용 또는 자체 서명 인증서를 사용하여verify-ca
종종 충분한 보호를 제공합니다.
기본값sslmode
is선호
. 테이블에 표시된 것처럼 보안 관점에서 의미가 없으며 가능한 경우 성능 오버 헤드 만 약속합니다.
표 32.2클라이언트의 SSL 설정과 관련된 파일을 요약합니다.
표 32.2. libpq/client ssl 파일 사용
파일 | 내용 | 효과 |
---|---|---|
~/.범퍼카 토토/범퍼카 토토.crt |
클라이언트 인증서 | 서버로 전송 |
~/.범퍼카 토토/범퍼카 토토.key |
클라이언트 개인 키 | 소유자가 보낸 고객 인증서를 증명합니다. 인증서 소유자가 신뢰할 수 있음을 나타내지 않습니다 |
~/.범퍼카 토토/root.crt |
신뢰할 수있는 인증서 | 신뢰할 수있는 인증서에 의해 서버 인증서가 서명되었는지 확인 |
~/.범퍼카 토토/root.crl |
인증서 당국이 취소 한 인증서 | 서버 인증서는이 목록에 있지 않아야합니다 |
이전 버전의와 호환 해야하는 응용 프로그램범퍼카 토토, 사용OpenSSL버전 1.0.2 이상, 사용하기 전에 SSL 라이브러리를 초기화해야합니다. 초기화하는 응용 프로그램libssl
및/또는libcrypto
도서관이 전화해야PQINITOPENSSL
libpqthelibssl
및/또는libcrypto
라이브러리는 응용 프로그램에 의해 초기화되어libpq해당 라이브러리를 초기화하지 않습니다. 그러나 이것은 사용시 불필요합니다OpenSSL버전 1.1.0 이상, 중복 초기화가 더 이상 문제가되지 않기 때문에
의 문서를 참조하십시오범퍼카 토토사용에 대한 자세한 내용을 목표로 삼고 있습니다.
PQINITOPENSSL
#응용 프로그램이 초기화 할 보안 라이브러리를 선택할 수 있도록합니다.
void pqinitopenssl (int do_ssl, int do_crypto);
이 기능은 더 이상 사용되지 않으며 거꾸로 호환성을 위해서만 존재합니다.
pqinitssl
#응용 프로그램이 초기화 할 보안 라이브러리를 선택할 수 있도록합니다.
void pqinitssl (int do_ssl);
이 기능은와 같습니다.pqinitopenssl (do_ssl, do_ssl)
. 이 기능은 더 이상 사용되지 않으며 거꾸로 호환성을 위해서만 존재합니다.
pqinitssl
andPQINITOPENSSL
거꾸로 호환성을 위해 유지되지만 더 이상 필요하지 않습니다범퍼카 토토 18. pqinitssl
이후에 존재했습니다범퍼카 토토8.0, whilePQINITOPENSSL
범퍼카 토토8.4,pqinitssl
이전 버전의에서 작업 해야하는 응용 프로그램에 바람직 할 수 있습니다.libpq.