O Transport Layer Security (TLS) criptografa a comunicação entre aplicativos cliente e o OSS. O TLS é um protocolo criptográfico padrão que garante privacidade e integridade dos dados para clientes e servidores em comunicação pela internet. Você pode configurar a versão do TLS e o conjunto de cifras no OSS. Após a configuração, os clientes poderão usar apenas a versão do TLS e o conjunto de cifras especificados para se comunicar com o OSS. Isso assegura que o link de comunicação atenda aos seus requisitos de segurança.
Pré-requisitos
Os usuários RAM devem ter as seguintes permissões: oss:PutTLSVersion e oss:GetTLSVersion. Para obter mais informações, consulte Conceder uma política personalizada a um usuário RAM.
Versões do TLS
O TLS oferece suporte a quatro versões: 1,0, 1,1, 1,2 e 1,3. A tabela a seguir descreve os casos de uso e os navegadores compatíveis com cada versão.
|
Protocolo |
Descrição |
Casos de uso |
Navegadores compatíveis |
|
TLS 1,0 |
Esta versão utiliza algoritmos de criptografia como RSA, DES e 3DES. O TLS 1,0 possui vulnerabilidades de segurança conhecidas e é suscetível a ataques como BEAST e POODLE. Ele não fornece mais proteção adequada para conexões de rede modernas e não atende aos padrões de conformidade PCI DSS. |
Devido às suas vulnerabilidades de segurança, o TLS 1,0 não é mais amplamente recomendado. Na maioria dos casos, recomendamos atualizar para uma versão mais segura do TLS. |
|
|
TLS 1,1 |
Esta versão melhora a segurança ao corrigir algumas vulnerabilidades conhecidas e adicionar suporte a algoritmos de criptografia mais fortes, como AES, RSA e SHA-256. |
Indicado para ambientes que exigem um nível de segurança relativamente alto, mas não requerem os recursos mais recentes do TLS. |
|
|
TLS 1,2 |
Esta versão aprimora ainda mais a segurança e adiciona novos recursos, como Server Name Indication (SNI) e o protocolo de handshake estendido. Os algoritmos de criptografia suportados incluem AES-GCM, AES-CBC e ECDHE. |
Adequado para a maioria dos cenários comuns de comunicação segura, incluindo aplicativos web, sites de e-commerce, e-mail e redes privadas virtuais (VPNs). |
|
|
TLS 1,3 |
Esta versão introduz melhorias significativas em segurança, desempenho e privacidade. Ela remove algoritmos criptográficos inseguros, adiciona mecanismos de troca de chaves e algoritmos de criptografia mais robustos, reduz a latência de handshake e oferece melhor sigilo de encaminhamento e mecanismos de autenticação. |
Recomendado para cenários com requisitos rigorosos de segurança que demandam melhor desempenho e privacidade, como instituições financeiras, grandes empresas de internet e agências governamentais. |
|
Observações de uso
Evite configurar um bucket para permitir apenas TLS 1,0 ou TLS 1,1. No mínimo, sua configuração deve incluir a versão principal, TLS 1,2.
Se o TLS Version Management não estiver ativado, as versões TLS 1,0, 1,1 e 1,2 serão suportadas por padrão, exceto o TLS 1,3. Após ativar o TLS Version Management, selecione entre TLS 1,0, 1,1, 1,2 e 1,3. Na primeira vez que você configurar a versão do TLS no console do OSS, o TLS 1,2 será selecionado por padrão como a versão principal. Se o TLS 1,2 não for selecionado, alguns clientes principais podem falhar ao acessar o OSS.
Fazer downgrade da versão do TLS (por exemplo, de TLS 1,2 para TLS 1,1 ou TLS 1,0) ou desativar o TLS Version Management pode introduzir riscos de segurança e conformidade. Prossiga com cautela.
Antes de desativar uma versão do TLS, verifique se nenhum cliente depende exclusivamente dessa versão para conexões.
Procedimento
OSS console
ossutil CLI
Referência da API
Essas operações utilizam APIs REST. Para aplicativos altamente personalizados, faça solicitações de API REST diretamente, o que exige escrever manualmente o código de cálculo de assinatura. Para obter mais informações, consulte PutBucketHttpsConfig e GetBucketHttpsConfig.
Perguntas frequentes
Verificar a versão atual do TLS
Se o cliente não especificar uma versão do TLS, execute o seguinte comando para determinar a versão negociada entre o cliente e o servidor.
openssl s_client -connect <bucket>.<endpoint>:443 -servername <bucket>.<endpoint>
A tabela a seguir descreve os parâmetros no comando.
|
Parâmetro |
Descrição |
|
bucket |
O nome do seu bucket do OSS. |
|
endpoint |
O endpoint público, endpoint interno ou nome de domínio personalizado. |
Você pode encontrar a versão do TLS na saída do comando.
O valor do campo Protocol na resposta é a versão atual do TLS. A seguir está um exemplo de resposta:
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES128-GCxxx
Session-ID: DF6AF8834A5BE3E9EDCxxx
Session-ID-ctx:
Master-Key: 0C25A19D6E9E3BDEC86B417125AEC1FFA85xxx
Key-Arg : None
Krb5 Principal: None
PSK identity: None
PSK identity hint: None
TLS session ticket lifetime hint: 300 (seconds)
TLS session ticket:
Verificar a configuração do TLS
Para verificar se o seu bucket está configurado corretamente para permitir apenas TLS 1,2, verifique os seguintes comportamentos:
-
Um cliente consegue acessar o servidor quando usa explicitamente o TLS 1,2.
openssl s_client -connect <bucket>.<endpoint>:443 -servername <bucket>.<endpoint> -tls1_2A tabela a seguir descreve os parâmetros no comando.
Parâmetro
Descrição
bucket
O nome do seu bucket do OSS.
endpoint
O endpoint público, endpoint interno ou nome de domínio personalizado.
Exemplo de resposta:
SSL handshake has read 5779 bytes and written 470 bytes --- New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256 Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE No ALPN negotiated SSL-Session: Protocol : TLSv1.2 Cipher : ECDHE-RSA-AES128-Gxxx Session-ID: 6F487389CA287BAFD2xxx Session-ID-ctx: Master-Key: 620777CB36570132F9xxx Key-Arg : None Krb5 Principal: None PSK identity: None PSK identity hint: None TLS session ticket lifetime hint: 300 (seconds) -
Um cliente consegue acessar o servidor quando não especifica uma versão do TLS (desde que o cliente suporte TLS 1,2).
openssl s_client -connect <bucket>.<endpoint>:443 -servername <bucket>.<endpoint>Exemplo de resposta:
SSL handshake has read 5779 bytes and written 470 bytes --- New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256 Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE No ALPN negotiated SSL-Session: Protocol : TLSv1.2 Cipher : ECDHE-RSA-AES128-Gxxx Session-ID: 6F487389CA287BAFD2xxx Session-ID-ctx: Master-Key: 620777CB36570132F9xxx Key-Arg : None Krb5 Principal: None PSK identity: None PSK identity hint: None TLS session ticket lifetime hint: 300 (seconds) -
O servidor rejeita conexões de clientes que especificam uma versão do TLS diferente de TLS 1,2 (por exemplo, TLS 1,1).
openssl s_client -connect <bucket>.<endpoint>:443 -servername <bucket>.<endpoint> -tls1_1Exemplo de resposta:
[root@i-xxx xxx ~]# openssl s_client -connect xxx.oss-cn-hangzhou.aliyuncs.com:443 -servername xxx.oss-cn-hangzhou.aliyuncs.com -tls1_1 CONNECTED(00000003) 140293333579664:error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version:s3_pkt.c:1493:SSL alert number 70 140293333579664:error:1409E0E5:SSL routines:ssl3_write_bytes:ssl handshake failure:s3_pkt.c:659: --- no peer certificate available --- No client certificate CA names sent --- SSL handshake has read 7 bytes and written 0 bytes --- New, (NONE), Cipher is (NONE) Secure Renegotiation IS NOT supported Compression: NONE Expansion: NONE No ALPN negotiated SSL-Session: Protocol : TLSv1.1 Cipher : 0000 Session-ID: Session-ID-ctx: Master-Key: Key-Arg : None Krb5 Principal: None PSK identity: None PSK identity hint: None Start Time: 1692262610 Timeout : 7200 (sec) Verify return code: 0 (ok) ---