OpenSSL

密碼學和 SSL/TLS 工具包

ossl-guide-libssl-introduction

名稱

ossl-guide-libssl-introduction、ssl - OpenSSL 指南:libssl 簡介

簡介

OpenSSL libssl 函式庫提供多種安全網路通訊協定的實作。它特別提供 SSL/TLS (SSLv3、TLSv1、TLSv1.1、TLSv1.2 和 TLSv1.3)、DTLS (DTLSv1 和 DTLSv1.2) 和 QUIC (僅限用戶端)。函式庫仰賴 libcrypto 進行其基礎密碼學運算(請參閱 ossl-guide-libcrypto-introduction(7))。

libssl 提供的 API 組在所有這些不同的網路協定中都是通用的,因此熟悉使用其中一種協定撰寫應用程式的開發人員應該能夠相對輕鬆地轉換為使用另一種協定。

撰寫為使用 libssl 的應用程式將包含 <openssl/ssl.h> 標頭檔,並且通常會使用兩個主要的資料結構,即 SSLSSL_CTX

SSL 物件用於表示與遠端對等體的連線。一旦與遠端對等體建立連線,便可以與該對等體交換資料。

在使用 DTLS 時,任何交換的資料都使用「資料報」語意,亦即資料封包可以按任何順序傳遞,而且無法保證它們會全部抵達。在此情況下,用於連線的 SSL 物件也會用於與對等體交換資料。

TLS 和 QUIC 都支援「資料串流」的概念。透過串流傳送的資料保證會按順序傳遞,且不會遺失任何資料。串流可以是單向或雙向的。

SSL/TLS 每個連線僅支援一個資料串流,而且它總是雙向的。在此情況下,用於連線的 SSL 物件也代表該串流。有關更多資訊,請參閱 ossl-guide-tls-introduction(7)

QUIC 協定每個連線可支援多個串流,且這些串流可以是單向或雙向的。在此情況下,SSL 物件可以表示基礎連線、串流或兩者。如果使用多個串流,則會為每個串流使用一個獨立的 SSL 物件。請參閱 ossl-guide-quic-introduction(7) 以取得更多資訊。

SSL_CTX 物件用於為基礎連線建立 SSL 物件。單一 SSL_CTX 物件可建立多個連線(每個連線由一個獨立的 SSL 物件表示)。libssl 中的許多 API 函數有兩種形式:一種使用 SSL_CTX,另一種使用 SSL。一般來說,您套用至 SSL_CTX 的設定會繼承至您從中建立的任何 SSL 物件。或者,您可以直接套用設定至 SSL 物件,而不會影響其他 SSL 物件。請注意,在從 SSL_CTX 建立第一個 SSL 物件後,通常不應變更 SSL_CTX

資料結構

除了 SSL_CTXSSL 之外,應用程式可能需要使用許多其他資料結構。它們摘要如下。

SSL_METHOD(SSL 方法)

此結構用於指出您要建立的連線類型,例如是要代表用戶端或伺服器,以及是要使用 SSL/TLS、DTLS 或 QUIC(僅限用戶端)。在建立 SSL_CTX 時,它會傳遞為參數。

SSL_SESSION(SSL 會話)

與對等方建立連線後,可以重複使用已同意的加密資料,以更快速地建立與同一個對等方的未來連線。用於此類未來連線建立嘗試的資料組會收集到 SSL_SESSION 物件中。與對等方的單一成功連線可能會產生零個或多個此類 SSL_SESSION 物件,以用於未來的連線嘗試。

SSL_CIPHER(SSL 加密)

在建立連線期間,用戶端和伺服器會同意他們要使用的加密演算法,以進行加密和其他用途。要一起使用的單一加密演算法組稱為密碼組。此類組由 SSL_CIPHER 物件表示。

可使用的可用密碼組套件組設定在 SSL_CTXSSL 中。

進一步閱讀

請參閱 ossl-guide-tls-introduction(7) 以了解 SSL/TLS 協定的簡介,以及 ossl-guide-quic-introduction(7) 以了解 QUIC 的簡介。

請參閱 ossl-guide-libcrypto-introduction(7) 以了解 libcrypto 的簡介。

另請參閱

ossl-guide-libcrypto-introduction(7)ossl-guide-tls-introduction(7)ossl-guide-quic-introduction(7)

版權所有 2000-2023 OpenSSL 專案作者。保留所有權利。

根據 Apache 授權條款 2.0(「授權條款」)授權。您只能在遵守授權條款的情況下使用此檔案。您可以在原始程式碼散佈中的 LICENSE 檔案中取得副本,或前往 https://www.openssl.org/source/license.html 取得副本。