Ao configurar a criptografia SSL para uma instância do ApsaraDB RDS for PostgreSQL, você pode usar um certificado gerenciado pela Alibaba Cloud ou um certificado personalizado. Este tópico descreve como usar um certificado personalizado.
Pré-requisitos
-
A instância do ApsaraDB RDS for PostgreSQL deve executar PostgreSQL 10 ou versão posterior e usar a versão com disco em nuvem.
NotaInstâncias que usam o método de faturamento Serverless não são compatíveis.
-
O OpenSSL deve estar instalado.
NotaNo Linux, o OpenSSL já vem instalado por padrão. No Windows, baixe e instale um pacote OpenSSL.
Considerações importantes
Ativar a criptografia SSL aumenta a utilização de CPU e a latência de leitura/gravação.
Após ativar a criptografia SSL, desconecte e reconecte as conexões existentes para que a criptografia entre em vigor.
Configurar ou atualizar um certificado personalizado, ou desativar a criptografia SSL, reinicia a instância do banco de dados. Esse processo leva aproximadamente três minutos. Recomendamos realizar essas operações durante períodos de baixo tráfego.
Etapa 1: Obter um certificado personalizado
Ao gerar a chave privada de um certificado de servidor ou de um certificado autoassinado, não criptografe a chave privada com senha. Caso contrário, não será possível ativar a criptografia SSL.
Este tópico usa um sistema CentOS como exemplo. No Windows, o comando openssl é idêntico ao usado em sistemas CentOS. Substitua o comando cp copiando o arquivo manualmente e substitua o comando vim editando o arquivo manualmente.
-
Crie um certificado autoassinado (server-ca.crt) e sua chave privada (server-ca.key).
openssl req -new -x509 -days 365 -nodes -out server-ca.crt -keyout server-ca.key -subj "/CN=root-server-ca" -
Gere um arquivo de solicitação de assinatura de certificado (CSR) (server.csr) e um arquivo de chave privada do servidor (server.key).
Um certificado personalizado pode proteger um ou mais endpoints. Escolha o método adequado abaixo para gerar o arquivo CSR do servidor.
-
Para proteger um único endpoint, execute o comando a seguir.
openssl req -new -nodes -text -out server.csr -keyout server.key -subj "/CN=pgm-bpxxxxx.pg.rds.aliyuncs.com"NotaNeste exemplo,
pgm-bpxxxxx.pg.rds.aliyuncs.comé um endpoint de exemplo. Substitua-o pelo endpoint que deseja proteger. Para visualizar o endpoint, consulte Visualizar ou modificar um endpoint e porta. -
Para proteger vários endpoints, siga as etapas abaixo.
-
Copie o arquivo de configuração do OpenSSL para uso temporário.
cp /etc/pki/tls/openssl.cnf /tmp/openssl.cnfNotaNo Windows, o arquivo openssl.cnf está localizado no subdiretório \bin\cnf do diretório de instalação do OpenSSL. Copie o arquivo para qualquer local de sua preferência.
-
Execute o comando abaixo para editar o arquivo temporário openssl.cnf:
vim /tmp/openssl.cnf -
Pressione
ipara entrar no modo de edição e configure o conteúdo a seguir.# Add the following line to the end of the [ req ] section. req_extensions = v3_req # Add a new [ v3_req ] section. [ v3_req ] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names # Add a new [ alt_names ] section and specify the database endpoints to protect after DNS. [ alt_names ] DNS.1 = pgm-bpxxxxx.pg.rds.aliyuncs.com DNS.2 = pgm-bpxxxxx.pg.rds.aliyuncs.com Pressione a tecla
Escpara sair do modo de edição. Em seguida, insira:wqpara salvar as alterações e sair.-
Gere o arquivo CSR do servidor (server.csr) e o arquivo de chave privada do servidor (server.key).
openssl req -new -nodes -text -out server.csr -keyout server.key -config /tmp/openssl.cnfAo gerar o arquivo CSR (server.csr), o OpenSSL solicitará os seguintes parâmetros.
Parâmetro
Descrição
Exemplo
Country name
Código do país com duas letras no padrão ISO.
CN
State or province name
A província ou estado.
Zhejiang
Locality name
A cidade.
Hangzhou
Organization name
O nome da empresa.
Alibaba
Organizational unit name
O nome do departamento.
Aliyun
Common name
O nome de domínio para o qual você está solicitando o certificado SSL. Esse campo já está pré-configurado no arquivo openssl.cnf e pode ser ignorado.
-
Email address
Não obrigatório.
-
A challenge password
Não obrigatório.
-
An optional company name
Não obrigatório.
-
-
-
-
Gere o certificado do servidor (server.crt).
-
Para proteger um único endpoint, execute o comando a seguir.
openssl x509 -req -in server.csr -text -days 365 -CA server-ca.crt -CAkey server-ca.key -CAcreateserial -out server.crt -
Para proteger vários endpoints, execute o comando a seguir.
openssl x509 -req -in server.csr -text -days 365 -CA server-ca.crt -CAkey server-ca.key -CAcreateserial -out server.crt -extensions v3_req -extfile /tmp/openssl.cnf
-
Execute o comando ls para visualizar os arquivos gerados:
# ls
server-ca.crt server-ca.key ca.srl server.crt server.csr server.key
Arquivos principais:
server.crt: O certificado do servidor.
server.key: A chave privada do servidor.
server-ca.crt: O certificado autoassinado.
server-ca.key: A chave privada do certificado autoassinado.
Etapa 2: Ativar SSL com um certificado personalizado
Após configurar um certificado personalizado, o Status muda para Modifying SSL Settings por aproximadamente três minutos. Aguarde até que o status mude para Running antes de prosseguir.
Acesse a página Instances. Na barra de navegação superior, selecione a região onde a instância RDS está localizada. Em seguida, localize a instância RDS e clique em seu ID.
No painel de navegação à esquerda, escolha > SSL.
-
Defina Custom Certificate como Custom Certificate. Ao lado de Configure Database Certificate (to Prevent Database Disguise), clique em Configuration. Insira o certificado do servidor e sua chave privada e clique em OK.
Observação: após modificar o certificado do servidor, o sistema o atualiza automaticamente e reinicia a instância do banco de dados.
Parâmetro
Valor
Server certificate
Cole o conteúdo completo do arquivo server.crt obtido na Etapa 1: Obter um certificado personalizado, incluindo todo o conteúdo de -----BEGIN CERTIFICATE----- até -----END CERTIFICATE-----.
Server certificate private key
Cole o conteúdo completo do arquivo server.key obtido na Etapa 1: Obter um certificado personalizado, incluindo todo o conteúdo de -----BEGIN PRIVATE KEY----- até -----END PRIVATE KEY-----.
Se você especificou vários endpoints para o certificado, vários registros serão exibidos em Protected Host. A página também exibe outros detalhes, como o validity period, além de opções para View Certificate Details e View Private Key Details. Para atualizar o certificado, clique em Modify.
Etapa 3: Conectar-se ao banco de dados
O ApsaraDB RDS for PostgreSQL é compatível com conexões SSL a partir de clientes remotos. Consulte Conectar-se a uma instância do ApsaraDB RDS for PostgreSQL via SSL para obter as instruções de conexão.
Etapa 4: (Opcional) Atualizar o certificado
Atualizar o certificado reinicia a instância. Prossiga com cautela.
Na página SSL, na seção Configure Database Certificate (to Prevent Database Disguise), clique em Modify . Em seguida, insira o novo certificado do servidor e a chave privada.
Etapa 5: (Opcional) Desativar a criptografia SSL
Desativar a criptografia SSL reinicia a instância. Prossiga com cautela.
Para desativar a criptografia SSL, na página SSL, clique em Disable SSL.