Pelo que posso ver, a conexão via SSL/TLS está sempre disponível com o Cloud SQL. Se eu aplicá-lo, torna-se obrigatório. Mas o nível máximo de proteção que consegui alcançar é verify-ca
da perspectiva do cliente e do servidor. Aquilo é:
- o servidor não garantirá que (
auth-options
) o nome comum no certificado do cliente corresponda ao usuário com o qual estou tentando me conectar (qualquer nome comum pode ser usado) - o cliente não garantirá que o nome comum no certificado do servidor corresponda ao nome do host ao qual estou me conectando (qualquer nome de host pode ser usado)
De acordo com os documentos com os quais posso me conectarsslmode=verify-full
, mas não sei o nome da instância que eles significam ou as informações nos documentos estão desatualizadas. (1) Como posso me conectar com verify-full
?
Os documentos também dizem:
Um modo SSL
verify-full
não é necessário;verify-ca
é suficiente porque a CA é específica da instância.
Nos documentospg
posso ver :
A diferença entre
verify-ca
everify-full
depende da política da CA raiz. Se uma CA pública for usada,verify-ca
permite conexões a um servidor que outra pessoa possa ter registrado na CA. Neste caso,verify-full
deve ser sempre utilizado. Se uma CA local for usada, ou mesmo um certificado autoassinado, o usoverify-ca
geralmente fornece proteção suficiente.
(2) O que isso significa? Se a CA for local, apenas pessoas autorizadas poderão criar um certificado e uma chave privada e assinar o certificado com o certificado raiz da CA? E embora provavelmente seja possível obter o certificado do servidor (se o servidor for público), mas não é possível obter a chave privada? Como tal, nenhuma pessoa não autorizada pode ter um certificado válido? Assim, se um certificado é válido, foi criado por uma pessoa autorizada, e não importa qual seja o CN? Por que? Parece que estou perto, mas ainda falta algo.
(3) Se a CA for local, verify-ca
== verify-full
(sem escuta, sem MITM)?
Mais detalhes sobre o que exatamente eu fiz podem ser encontrados aqui .
Primeiro você precisa descobrir o CN do certificado do servidor:
Então você pode conectar:
Não conheço outras maneiras de descobrir isso (o CN) além de usar esse truque. Como tal, não parece que você deva usar
verify-full
ou que faça algum sentido. A documentação sugere queverify-full
pelo menos não significativamente melhor que overify-ca
.Com uma CA local, apenas pessoas autorizadas podem obter um certificado, portanto ninguém pode fingir ser um servidor.
verify-ca != verify-full
, mas supostamente não há muita diferença em termos de segurança. Particularmente, nenhum MITM deveria ser possível.Um exemplo de configuração de SSL/TLS pode ser encontrado aqui .