Cambiare il fornitore di servizi di crittografia predefinito

Questo documento descrive come cambiare il fornitore di servizi di crittografia rustls predefinito in Rust. Potresti voler cambiare il fornitore di servizi di crittografia predefinito se la tua applicazione ha requisiti specifici non soddisfatti dal nostro valore predefinito.

Le librerie client Rust utilizzano Rustls per proteggere la comunicazione tra l'applicazione e Google Cloud. Rustls può utilizzare provider diversi per le funzioni crittografiche. Per impostazione predefinita, le librerie client attivano il provider aws-lc-rs. Le librerie client lo utilizzano come impostazione predefinita perché si basa su BoringSSL, una libreria crittografica molto apprezzata implementata da Google, ed è l'unico provider di crittografia Rust certificato FIPS.

Tuttavia, alcune applicazioni potrebbero dover utilizzare un altro fornitore. Questa guida mostra come disattivare il provider predefinito e configurare il tuo, utilizzando google-cloud-storage per illustrare come modificare i requisiti per Rust, con ring come provider di crittografia alternativo. Questo processo può essere personalizzato per altre librerie client. Per altri fornitori, consulta la documentazione di rustls.

Utilizzare le librerie client con il provider di crittografia predefinito

Per utilizzare il fornitore di servizi di crittografia predefinito, aggiungi la libreria client come dipendenza al file Cargo.toml:

[dependencies]
google-cloud-storage = { version = "1" }

Utilizzare il provider di crittografia predefinito con altre funzionalità predefinite disattivate

Alcune applicazioni preferiscono disattivare tutte le funzionalità predefinite nelle dipendenze e poi attivare solo quelle che vogliono utilizzare. Ad esempio, il tuo Cargo.toml potrebbe essere:

[dependencies]
google-cloud-storage = { version = "1", default-features = false }

Per attivare solo l'utilizzo della funzionalità del provider predefinito:

[dependencies]
google-cloud-storage = { version = "1", default-features = false, features = ["default-rustls-provider"] }

Utilizzare il proprio fornitore di criptovalute

Per selezionare il tuo fornitore:

  1. Aggiungi Rust con le funzionalità predefinite disattivate e includi le dipendenze necessarie per il tuo fornitore. In questa guida viene utilizzato ring:

    Devi utilizzare la stessa versione di `rustls` di `google-cloud-storage`.
    [dependencies]
    google-cloud-storage = { version = "1", default-features = false }
    rustls               = { version = "0.23", features = ["ring"] }
    
  2. Modifica la funzione main() per installare questo fornitore:

    use rustls::crypto::{CryptoProvider, ring::default_provider};
    
    #[tokio::main]
    async fn main() -> anyhow::Result<()> {
        // Install a default crypto provider.
        CryptoProvider::install_default(default_provider())
            .map_err(|_| anyhow::anyhow!("default crypto provider already installed"))?;
        // ... ... ...
        Ok(())
    }