切換預設加密編譯提供者

本文說明如何在 Rust 中切換預設 rustls 加密供應商。如果應用程式有特定需求,而預設供應商無法滿足,您可能需要切換預設加密供應商。

Rust 用戶端程式庫使用 Rustls,確保應用程式與 Google Cloud之間的通訊安全。Rustls 可針對密碼編譯函式使用不同供應商。根據預設,用戶端程式庫會啟用 aws-lc-rs 提供者。用戶端程式庫會將此做為預設值,因為這是以 BoringSSL 為基礎,而 BoringSSL 是 Google 實作的知名加密程式庫,也是唯一通過 FIPS 認證的 Rust 加密供應商。

不過,部分應用程式可能需要使用其他供應商。本指南說明如何停用預設供應商並設定自己的供應商,並以 google-cloud-storage 為例,說明如何使用 ring 做為替代加密供應商,變更 Rust 的需求。您可以為其他用戶端程式庫自訂這個程序。如需其他供應商,請參閱 rustls 說明文件

使用用戶端程式庫和預設加密服務供應商

如要使用預設加密服務供應商,請將用戶端程式庫新增為 Cargo.toml 檔案的依附元件:

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

使用預設加密貨幣供應商,並停用其他預設功能

部分應用程式偏好停用依附元件中的所有預設功能,然後只啟用想使用的功能。舉例來說,您的 Cargo.toml 可能會顯示:

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

如要只啟用預設供應商功能,請使用:

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

使用自己的加密編譯供應商

如要選取自己的供應商,請按照下列步驟操作:

  1. 新增 Rust,並停用預設功能,然後加入供應商所需的任何依附元件。在本指南中,我們使用 ring

    您必須使用與 `google-cloud-storage` 相同的 `rustls` 版本。
    [dependencies]
    google-cloud-storage = { version = "1", default-features = false }
    rustls               = { version = "0.23", features = ["ring"] }
    
  2. 變更 main() 函式,安裝這個供應商:

    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(())
    }