O OpenSSL 3.3 lançado com muitas adições para QUIC e otimizações de desempenho da CPU. Portanto, esta é a versão mais recente de recursos importantes para esta biblioteca SSL amplamente usada.
O OpenSSL 3.3 traz muitas melhorias para o suporte ao protocolo de transporte QUIC, aproveitando o suporte à conexão QUIC introduzido no OpenSSL 3.2. OpenSSL 3.2 focado no suporte ao cliente QUIC, enquanto para OpenSSL 3.3 há mais trabalho no lado do servidor QUIC. Detalhes sobre o suporte atual a QUIC HTTP/3 no OpenSSL podem ser encontrados nesta página de documentação.
Entre as mudanças para encontrar com OpenSSL 3.3 estão:
- Suporte para qlogc para rastreamento de conexões QUIC.
- Muitas novas APIs em torno de conexões QUIC e trabalhando no suporte a servidores QUIC multi-stream.
- Otimização AES-GCM unroll8 para o Microsoft Azure Cobalt 100.
- Otimizado AES-CTR para processadores ARM Neoverse V1 e V2.
- Otimizações AES e SHA3 para o Apple Silicon M3.
- Implementação de montagem para MD5 em LoongArch64.
Principais mudanças entre OpenSSL 3.2 e OpenSSL 3.3.0 [9 Abr 2024]
O OpenSSL 3.3.0 é uma versão de recursos que adiciona novas funcionalidades significativas ao OpenSSL.
OpenSSL 3.3 lançado com muitas adições para QUIC e otimizações de desempenho da CPU. Esta versão adiciona os seguintes novos recursos:
- Foi adicionado suporte para qlog para rastrear conexões QUIC
- APIs adicionadas para permitir a configuração do tempo limite ocioso negociado para QUIC e para permitir a determinação do número de fluxos adicionais que atualmente pode ser criado para uma conexão QUIC.
- APIs adicionadas para permitir a desativação do processamento implícito de eventos QUIC para QUIC SSL Objetos
- APIs adicionadas para permitir a consulta do tamanho e da utilização de um fluxo QUIC buffer de gravação
- Nova API , que pode ser usada para enviar um fim de fluxo (FIN) condição de forma otimizada ao usar o QUIC.
SSL_write_ex2
- Suporte limitado para sondagem de conexão QUIC e objetos de fluxo em um forma de não bloqueio.
- Adicionada uma nova API EVP_DigestSqueeze(). Isso permite que o SHAKE aperte vários vezes com diferentes tamanhos de saída.
- Adicionado exportador para CMake em Unix e Windows, juntamente com o pkg-config exportador.
- O algoritmo de hash BLAKE2s corresponde ao suporte de BLAKE2b para configurável comprimento de saída.
- A função EVP_PKEY_fromdata foi aumentada para permitir o derivação de parâmetros CRT (Teorema do Restante Chinês) quando solicitado
- Funções de API adicionadas SSL_SESSION_get_time_ex(), SSL_SESSION_set_time_ex() usando time_t que é seguro Y2038 em sistemas de 32 bits quando 64 bits de tempo está habilitado
- Entradas desconhecidas em TLS SignatureAlgorithms, ClientSignatureAlgorithms opções de configuração e as respectivas chamadas para SSL[_CTX]_set1_sigalgs() e SSL[_CTX]_set1_client_sigalgs() que começam com caractere são ignorado e a configuração ainda será usada.
?
- Adicionado e opções para substitua o Emissor e a Entidade ao criar um certificado. A opção agora é um alias para .
-set_issuer
-set_subject
openssl x509
-subj
-set_subject
- Adicionados vários novos recursos do CMPv3 definidos em RFC 9480 e RFC 9483
- Nova opção , que permite configurar um TLS1.3 servidor para preferir a retomada da sessão usando a troca de chaves somente PSK sobre PSK com DHE, se ambos estiverem disponíveis.
SSL_OP_PREFER_NO_DHE_KEX
- Nova opção de configuração atexit, que controla se o OPENSSL_cleanup é registrado quando libcrypto é descarregado.
- Adicionado X509_STORE_get1_objects para evitar problemas com o existente X509_STORE_get0_objects API em aplicativos multi-thread.
Esta versão incorpora o seguinte: potencialmente significativo ou incompatível: Alterações:
- Otimização de unroll8 AES-GCM aplicada ao Microsoft Azure Cobalt 100
- AES-CTR otimizado para ARM Neoverse V1 e V2
- Habilite as otimizações AES e SHA3 em sistemas MacOS baseados no Applie Silicon M3 semelhante a M1/M2.
- Várias otimizações para rotinas criptográficas usando criptografia vetorial RISC-V Extensões
- Adicionada implementação de assembly para md5 em loongarch64
- Aceitar contexto mais longo para exportadores TLS 1.2
- As definições de configuração de ativação e soft_load para provedores em openssl.cnf foram atualizados para exigir um valor de [1|yes|true|on] (em letras minúsculas ou ALTAS) para ativar a configuração. Por outro lado, um valor de [0|no|false|off] desativará a configuração.
- No , alterou a função de hash padrão usada com de para .
openssl speed
hmac
md5
sha256
- A opção para o e fará o saída do programa com 1 na falha.
-verify
openssl crl
openssl req
- Os d2i_ASN1_GENERALIZEDTIME(), d2i_ASN1_UTCTIME(), ASN1_TIME_check() e As funções relacionadas foram aumentadas para verificar um comprimento mínimo de a cadeia de entrada, de acordo com ITU-T X.690 seção 11.7 e 11.8.
- As funções OPENSSL_sk_push() e sk__push() agora retornam 0 em vez de -1 se chamado com um argumento de pilha NULL.
- Novo limite em cabeçalhos de resposta HTTP é introduzido no cliente HTTP. O O limite padrão é definido como 256 linhas de cabeçalho.
Esta versão incorpora as seguintes correções de bugs e mitigações:
- A função BIO_get_new_index() só pode ser chamada 127 vezes antes dela atinge seu limite superior de BIO_TYPE_MASK e agora retornará -1 uma vez que seu exausto.
Uma lista mais detalhada de alterações nesta versão pode ser encontrada no arquivo CHANGES.md.
Os usuários interessados em usar a nova funcionalidade QUIC são incentivados a ler o arquivo LEIA-ME para QUIC, que fornece links para relevantes documentação e código de exemplo.
Como sempre, relatórios de bugs e problemas relacionados ao OpenSSL podem ser arquivados em nosso problema rastreador.
Downloads e mais detalhes sobre a versão 3.3 do OpenSSL via GitHub.