제가 볼 수 있는 한 SSL/TLS를 통한 연결은 항상 Cloud SQL에서 가능합니다. 강제로 적용하면 필수가 됩니다. 그러나 내가 도달할 수 있는 최대 보호 수준은 verify-ca
클라이언트와 서버 모두의 관점에서 볼 때입니다. 그건:
- 서버확신하지 못할 것이다 (
auth-options
)클라이언트 인증서의 일반 이름이 연결하려는 사용자와 일치합니다(모든 일반 이름을 사용할 수 있음) - 클라이언트확신하지 못할 것이다서버 인증서의 일반 이름이 연결하려는 호스트 이름과 일치합니다(모든 호스트 이름을 사용할 수 있음)
문서에 따르면 나는연결할 수 있다그러나 sslmode=verify-full
인스턴스 이름이 무엇을 의미하는지 모르거나 문서의 정보가 오래되었습니다. (1) 와 어떻게 연결하나요 verify-full
?
문서또한 말한다:
SSL 모드는
verify-full
필요하지 않습니다.verify-ca
CA는 인스턴스별로 다르므로 충분합니다.
~ 안에문서pg
나는 볼 수 있다:
verify-ca
와 의 차이점은verify-full
루트 CA의 정책에 따라 다릅니다. 공용 CA를 사용하는 경우verify-ca
다른 사람이 CA에 등록했을 수 있는 서버에 대한 연결을 허용합니다. 이 경우verify-full
항상 사용해야 합니다. 로컬 CA를 사용하거나 자체 서명된 인증서를 사용하는 경우verify-ca
자주 사용하면 충분한 보호가 제공됩니다.
(2) 이것은 무엇을 의미합니까? CA가 로컬인 경우 승인된 사람만 인증서와 개인 키를 생성하고 CA의 루트 인증서로 인증서에 서명할 수 있습니까? 그리고 서버의 인증서를 얻을 수는 있지만(서버가 공개인 경우) 개인 키를 얻을 수는 없습니까? 그러면 권한이 없는 사람은 유효한 인증서를 가질 수 없나요? 그러면 인증서가 유효하다면 권한 있는 사람이 만든 것이므로 CN이 무엇이든 상관없나요? 왜? 가까워진 것 같지만, 아직 아쉬운 부분이 있습니다.
(3) CA가 로컬인 경우 verify-ca
== verify-full
(도청 없음, MITM 없음)?
내가 정확히 무엇을 했는지에 대한 자세한 내용을 확인할 수 있습니다.여기.
답변1
와 어떻게 연결하나요
verify-full
?
먼저 서버 인증서의 CN을 파악해야 합니다.
$ psql -h xx.yyy.xx.yyy -U postgres sslmode=verify-full
psql: error: connection to server at "xx.yyy.xx.yyy", port 5432 failed: server certificate for "31-0628fb91-0e3b-4c89-adca-ad557023a699.europe-central2.sql.goog" (and 1 other name) does not match host name "xx.yyy.xx.yyy"
그런 다음 연결할 수 있습니다.
$ psql -U postgres 'sslmode=verify-full hostaddr=xx.yyy.xx.yyy host=xx-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.europe-central2.sql.goog'
Password for user postgres:
psql (15.4, server 11.19)
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.
postgres=>
나는 이 트릭을 사용하는 것 외에 그것을 알아내는 다른 방법(CN)을 모릅니다. 따라서 사용해서는 안 될 것 같 verify-full
거나 의미가 없는 것 같습니다. 문서에 따르면 verify-full
적어도 verify-ca
.
이것은 무엇을 의미 하는가?
로컬 CA를 사용하면 권한이 있는 사람만 인증서를 얻을 수 있으므로 권한이 없는 사람은 대상 서버를 위조할 수 없습니다.
CA가 로컬인 경우
verify-ca == verify-full
(도청 없음, MITM 없음)?
verify-ca != verify-full
하지만 보안 측면에서는 별 차이가 없을 것 같습니다. 특히 MITM은 불가능합니다.
SSL/TLS 구성 예를 찾을 수 있습니다.여기.