
rustls v/0.23.44
Rust में मेमोरी-सुरक्षित TLS लाइब्रेरी जो TLS 1.2 और 1.3 को लागू करती है, जिसमें प्लग करने योग्य क्रिप्टो प्रदाता, क्लाइंट/सर्वर मोड और प्रमाणपत्र-आधारित प्रमाणीकरण शामिल हैं।
Rustls रस्ट में लिखी गई एक आधुनिक TLS लाइब्रेरी है।
स्थिति
Rustls का उपयोग कई संगठनों और परियोजनाओं में प्रोडक्शन में किया जाता है। हम उचित API सतह स्थिरता बनाए रखने का लक्ष्य रखते हैं, लेकिन नई सुविधाओं या प्रदर्शन सुधारों को समायोजित करने के लिए परिवर्तन करने पर API विकसित हो सकता है।
हमारे भविष्य की योजनाओं के लिए हमारे पास एक रोडमैप है। प्रदर्शन संबंधी गिरावट को रोकने और आपको अपने लक्षित हार्डवेयर पर rustls का मूल्यांकन करने में सक्षम बनाने के लिए हमारे पास बेंचमार्क भी हैं।
यदि आप सहायता करना चाहते हैं, तो कृपया CONTRIBUTING.md देखें।
रखरखावकर्ता "rustls" का उच्चारण rustles (rust-TLS के बजाय) के रूप में करते हैं, लेकिन हम इस बारे में कोई दृढ़ मत नहीं रखते।
चेंजलॉग
प्रत्येक रिलीज़ में परिवर्तनों की विस्तृत सूची यहाँ पाई जा सकती है: https://github.com/rustls/rustls/releases.
दस्तावेज़ीकरण
दृष्टिकोण
Rustls एक TLS लाइब्रेरी है जिसका उद्देश्य क्रिप्टोग्राफ़िक सुरक्षा का एक अच्छा स्तर प्रदान करना है, जिसे प्राप्त करने के लिए किसी कॉन्फ़िगरेशन की आवश्यकता नहीं होती है, और जो डिफ़ॉल्ट रूप से कोई असुरक्षित सुविधाएँ या अप्रचलित क्रिप्टोग्राफी प्रदान नहीं करती है।
Rustls क्लाइंट और सर्वर दोनों के लिए TLS1.2 और TLS1.3 लागू करता है। प्रोटोकॉल सुविधाओं की पूरी सूची देखें।
प्लेटफ़ॉर्म समर्थन
हालाँकि Rustls स्वयं प्लेटफ़ॉर्म-स्वतंत्र है, TLS में उपयोग की जाने वाली क्रिप्टोग्राफी एल्गोरिदम को लागू करने के लिए इसे क्रिप्टोग्राफी प्रिमिटिव के उपयोग की आवश्यकता होती है। Rustls में, एक crypto::CryptoProvider क्रिप्टो प्रिमिटिव कार्यान्वयनों का संग्रह प्रस्तुत करता है।
crypto::CryptoProvider स्ट्रक्चर का एक कस्टम इंस्टेंस प्रदान करके, आप rustls की सभी क्रिप्टोग्राफी निर्भरताओं को बदल सकते हैं। यह व्यापक वास्तुकलाओं और वातावरणों में पोर्टेबल होने या अनुपालन आवश्यकताओं को पूरा करने का एक मार्ग है। अधिक विवरण के लिए crypto::CryptoProvider दस्तावेज़ीकरण देखें।
क्रिप्टोग्राफी प्रदाता
Rustls 0.22 के बाद से, Rustls द्वारा उपयोग किए जाने वाले क्रिप्टोग्राफ़िक प्रिमिटिव के प्रदाता को चुनना संभव है। यह आकर्षक हो सकता है यदि आपके पास विशिष्ट प्लेटफ़ॉर्म, अनुपालन या सुविधा आवश्यकताएँ हों।
0.24 से, उपयोगकर्ताओं को ClientConfig या ServerConfig इंस्टेंस बनाते समय स्पष्ट रूप से एक क्रिप्टो प्रदाता प्रदान करना होगा। अधिक विवरण के लिए crypto::CryptoProvider दस्तावेज़ीकरण देखें।
प्रथम-पक्ष प्रदाता
Rustls परियोजना वर्तमान में दो क्रिप्टोग्राफी प्रदाताओं का रखरखाव करती है:
rustls-aws-lc-rs- एक प्रदाता जो क्रिप्टोग्राफी के लिएaws-lc-rsक्रेट का उपयोग करता है। जबकि इस प्रदाता को कुछ प्लेटफ़ॉर्मों पर बनाना कठिन हो सकता है, यह उत्कृष्ट प्रदर्शन और एक पूर्ण सुविधा सेट (पोस्ट-क्वांटम एल्गोरिदम सहित) प्रदान करता है।rustls-ring- एक प्रदाता जो क्रिप्टोग्राफी के लिएringक्रेट का उपयोग करता है। यह प्रदाता विभिन्न प्लेटफ़ॉर्मों पर बनाना आसान है, लेकिन इसका सुविधा सेट अधिक सीमित है (उदाहरण के लिए, यह पोस्ट-क्वांटम एल्गोरिदम का समर्थन नहीं करता है)।
Rustls टीम इसके पूर्ण सुविधा सेट और प्रदर्शन के लिए rustls-aws-lc-rs क्रेट का उपयोग करने की अनुशंसा करती है। aws-lc-rs में प्लेटफ़ॉर्म/आर्किटेक्चर समर्थन बाधाओं के अधिक विवरण के लिए aws-lc-rs FAQ देखें।
प्रदाताओं का चयन कैसे किया जाता है, इसके विवरण के लिए crypto::CryptoProvider का दस्तावेज़ीकरण देखें।
(0.24 से पहले के rustls संस्करणों के लिए, ये दोनों प्रदाता rustls क्रेट के भाग के रूप में भेजे जाते थे, और पसंदीदा प्रदाता का चयन करने के लिए Cargo सुविधाओं का उपयोग किया जाता था। aws-lc-rs सुविधा डिफ़ॉल्ट रूप से सक्षम थी।)
तृतीय-पक्ष प्रदाता
समुदाय ने Rustls के लिए तृतीय-पक्ष प्रदाता भी विकसित करना शुरू कर दिया है:
boring-rustls-provider- एक विकासाधीन प्रदाता जो क्रिप्टोग्राफी के लिएboringsslका उपयोग करता है।rustls-ccm-RustCryptoका उपयोग करके AES-CCM सिफर सूट (TLS 1.2 और 1.3) जोड़ता है, IoT/सीमित-संसाधन डिवाइस प्रोटोकॉल (IEEE 2030.5, Matter, RFC 7925) के लिए।rustls-graviola- एक प्रदाता जो क्रिप्टोग्राफी के लिएgraviolaका उपयोग करता है।rustls-mbedtls-provider- एक प्रदाता जो क्रिप्टोग्राफी के लिएmbedtlsका उपयोग करता है।rustls-openssl- एक प्रदाता जो क्रिप्टोग्राफी के लिए OpenSSL का उपयोग करता है।rustls-rustcrypto- एक प्रयोगात्मक प्रदाता जो क्रिप्टोग्राफी के लिएRustCryptoके क्रिप्टो प्रिमिटिव का उपयोग करता है।rustls-symcrypt- एक प्रदाता जो Microsoft की SymCrypt लाइब्रेरी का उपयोग करता है।rustls-wolfcrypt-provider- एक विकासाधीन प्रदाता जो क्रिप्टोग्राफी के लिएwolfCryptका उपयोग करता है।
इस विषय पर अधिक जानकारी के लिए दस्तावेज़ीकरण का कस्टम CryptoProvider बनाना अनुभाग देखें।
उदाहरण कोड
हमारी examples निर्देशिका में डेमो हैं जो दिखाते हैं कि stream::Stream सहायक का उपयोग करके I/O कैसे संभालें, साथ ही mio का उपयोग करके अधिक जटिल अतुल्यकालिक I/O भी। यदि आप पहले से ही async रनटाइम के लिए Tokio का उपयोग कर रहे हैं, तो आप rustls के साथ सीधे इंटरैक्ट करने के बजाय tokio-rustls का उपयोग करना पसंद कर सकते हैं।
mio आधारित उदाहरण सबसे पूर्ण हैं, और नीचे चर्चा की गई हैं। Rustls के नए उपयोगकर्ता अधिक जटिल MIO उदाहरणों में गोता लगाने से पहले सरल क्लाइंट/सर्वर उदाहरणों को देखना पसंद कर सकते हैं।
क्लाइंट उदाहरण प्रोग्राम
MIO क्लाइंट उदाहरण प्रोग्राम का नाम tlsclient-mio है।
कुछ नमूना रन:
$ cargo run --bin tlsclient-mio -- --http jbp.io
HTTP/1.1 200 OK
Date: Tue, 23 Jun 2026 16:13:40 GMT
Content-Type: text/html; charset=utf-8
Connection: close
(...)
अधिक विकल्पों के लिए cargo run --bin tlsclient-mio -- --help चलाएँ।
सर्वर उदाहरण प्रोग्राम
MIO सर्वर उदाहरण प्रोग्राम का नाम tlsserver-mio है।
यहाँ एक नमूना रन है; हम एक TLS इको सर्वर शुरू करते हैं, फिर openssl और tlsclient-mio के साथ उससे कनेक्ट करते हैं:
$ cargo run --bin tlsserver-mio -- --certs test-ca/rsa-2048/end.fullchain --key test-ca/rsa-2048/end.key -p 8443 echo &
$ echo hello world | openssl s_client -ign_eof -quiet -connect localhost:8443
depth=2 CN = ponytown RSA CA
verify error:num=19:self signed certificate in certificate chain
hello world
^C
$ echo hello world | cargo run --bin tlsclient-mio -- --cafile test-ca/rsa-2048/ca.cert --port 8443 localhost
hello world
^C
अधिक विकल्पों के लिए cargo run --bin tlsserver-mio -- --help चलाएँ।
लाइसेंस
Rustls को निम्नलिखित तीन लाइसेंसों के अंतर्गत वितरित किया जाता है:
- Apache License संस्करण 2.0।
- MIT लाइसेंस।
- ISC लाइसेंस।
ये क्रमशः LICENSE-APACHE, LICENSE-MIT और LICENSE-ISC के रूप में शामिल हैं। आप इस सॉफ़्टवेयर का उपयोग इनमें से किसी भी लाइसेंस की शर्तों के अंतर्गत, अपनी पसंद से कर सकते हैं।
परियोजना सदस्यता
- Joe Birr-Pixton (@ctz, परियोजना संस्थापक - Prossimo द्वारा पूर्णकालिक वित्तपोषित)
- Dirkjan Ochtman (@djc, सह-रखरखावकर्ता)
- Daniel McCarney (@cpu, सह-रखरखावकर्ता)
- Josh Aas (@bdaehlie, परियोजना प्रबंधन)
आचार संहिता
यह परियोजना Rust आचार संहिता को अपनाती है। कृपया किसी भी दुराचरण की रिपोर्ट करने के लिए, या आचार संहिता पर कोई टिप्पणी या प्रश्न होने पर [email protected] पर ईमेल करें।