Nesta página, veja como configurar uma instância para usar SSL/TLS. Saiba mais sobre como usar SSL/TLS com o Cloud SQL.
Visão geral
O Cloud SQL cria um certificado de servidor (server-ca.pem) automaticamente quando você cria a instância.
Para usar SSL/TLS, você precisa criar um certificado do cliente e fazer o download dos certificados para a máquina host do cliente MySQL.Para se conectar usando SSL/TLS, recomendamos que todas as conexões sejam aplicadas para usar SSL/TLS.
Como solicitar SSL/TLS
Quando a exigência de SSL/TLS está ativada, é possível usar os certificados de Proxy do Cloud SQL ou SSL/TLS para conectar-se à sua instância do Cloud SQL. Além disso, se você não exigir SSL/TLS, os clientes sem um certificado válido poderão se conectar.
Para ativar a solicitação de SSL/TLS:
Console
- Acesse a página "Instâncias" do Cloud SQL no Console do Google Cloud.
Acessar a página "Instâncias" do Cloud SQL - Clique no nome da instância para abrir a página Detalhes da instância.
- Clique no link Conexões no painel de navegação à esquerda.
- Role para baixo até a seção de Conexões SSL.
- Clique em Permitir somente conexões SSL.
gcloud
gcloud sql instances patch [INSTANCE_NAME] --require-ssl
REST v1beta4
-
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- instance-id: o ID da instância
Método HTTP e URL:
PATCH https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
Corpo JSON da solicitação:
{ "settings": { "ipConfiguration": {"requireSsl": "true"} } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
Certificados do servidor
O Cloud SQL cria um certificado de servidor automaticamente quando você cria a instância. Desde que o certificado do servidor seja válido, não será necessário gerenciá-lo ativamente. No entanto, o certificado tem uma data de validade de 10 anos. Após essa data, ele não será mais válido, e os clientes não poderão usá-lo para estabelecer uma conexão segura com a instância. Você receberá uma notificação quando o certificado do servidor estiver prestes a expirar.
No console, é possível receber informações sobre o certificado do servidor, como quando ele foi criado e quando ele expira, ou criar um novo manualmente.
Console
- Acesse a página "Instâncias" do Cloud SQL no Console do Google Cloud.
- Clique no nome da instância para abrir a página Detalhes da instância.
- Clique no link Conexões no painel de navegação à esquerda.
- Role para baixo até a seção Configurações de SSL do servidor.
Veja a data de validade do certificado do servidor na tabela.
Certificados de cliente
Criação de um novo certificado do cliente
Você pode criar até dez certificados do cliente em cada instância. Se você perder a chave privada de um certificado, precisará criar uma nova. Não é possível recuperá-la. Por padrão, o certificado do cliente tem uma data de validade de 10 anos. Você não será notificado quando os certificados do cliente estiverem prestes a expirar.
Console
- Acesse a página "Instâncias" do Cloud SQL no Console do Google Cloud.
- Clique no nome da instância para abrir a página Detalhes da instância.
- Clique no link Conexões no painel de navegação à esquerda.
- Role para baixo até a seção Configuração de SSL do cliente.
- Clique em Criar um certificado do cliente.
- Na caixa de diálogo Criar um certificado do cliente, adicione um nome exclusivo.
- Clique em Criar.
- Na primeira seção da caixa de diálogo Novo certificado SSL criado,
clique em Fazer download do client-key.pem para fazer download da chave
privada para um arquivo chamado
client-key.pem
. - Na segunda seção, clique em Fazer download do client-cert.pem para fazer o download
do certificado do cliente para um arquivo chamado
client-cert.pem
. - Na terceira seção, clique em Fazer download do server-ca.pem para fazer download
do certificado do servidor para um arquivo chamado
server-ca.pem
. - Clique em Fechar.
gcloud
Crie um certificado do cliente usando o comando
ssl client-certs create
:gcloud sql ssl client-certs create [CERT_NAME] client-key.pem --instance=[INSTANCE_NAME]
Recupere a chave pública do certificado recém-criado e copie-o no arquivo
client-cert.pem
com o comandossl client-certs describe
:gcloud sql ssl client-certs describe [CERT_NAME] --instance=[INSTANCE_NAME] --format="value(cert)" > client-cert.pem
Copie o certificado do servidor no arquivo
server-ca.pem
usando o comandoinstances describe
:gcloud sql instances describe [INSTANCE_NAME] --format="value(serverCaCert.cert)" > server-ca.pem
-
gcloud sql instances restart [INSTANCE_NAME]
REST v1beta4
Crie um certificado SSL/TLS e insira um nome exclusivo para ele nesta instância:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- instance-id: o ID da instância
- client-cert-name: o nome do certificado do cliente
Método HTTP e URL:
POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts
Corpo JSON da solicitação:
{ "commonName" : "client-cert-name" }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
-
Copie todo o conteúdo do certificado que está entre aspas (mas sem
copiar as aspas) da resposta para os arquivos locais, da seguinte maneira:
- Copie
serverCaCert.cert
paraserver-ca.pem
. - Copie
clientCert.cert
paraclient-cert.pem
. - Copie
certPrivateKey
paraclient-key.pem
.
- Copie
-
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- instance-id: o ID da instância
- activation-policy: a política de ativação é ALWAYS ou NEVER
Método HTTP e URL:
POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/restart
Corpo JSON da solicitação:
{ "settings": { "activationPolicy": "activation-policy" } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "kind": "sql#operation", "targetLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-20T21:30:35.667Z", "operationType": "RESTART", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
Neste momento, você tem:
- Um certificado do servidor salvo como
server-ca.pem
. - Um certificado de chave pública do cliente salvo como
client-cert.pem
. - Uma chave privada de cliente salva como
client-key.pem
.
Dependendo da ferramenta que você usa para se conectar, esses três itens são especificados
de modo diferente. Por exemplo, ao conectar usando o cliente do MySQL, esses três
arquivos são os valores para as opções de comando --ssl-ca
, --ssl-cert
e
--ssl-key
, respectivamente. Para ver um exemplo de conexão
que usa o cliente MySQL e SSL/TLS,
consulte
Conexão com o cliente MySQL.
A seguir
- Use o SSL/TLS para se conectar à instância do Cloud SQL.
- Gerencie o SSL/TLS na instância do Cloud SQL.
Saiba mais sobre como o MySQL usa SSL/TLS.