開放SSL

密碼學及 SSL/TLS 工具組

ssl

名稱

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_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 The OpenSSL Project Authors。保留所有權利。

根據 Apache 授權條款 2.0(「授權條款」)授權。您不得使用此檔案,除非符合授權條款。您可以在原始程式碼散佈中的 LICENSE 檔案中取得副本,或在 https://www.openssl.org/source/license.html 取得副本。