اس اس ال ssl
اتصال امن با کتابخانهی OpenSSL سیستم.
واردسازی اس اس ال
این بسته پوششی نازک روی OpenSSL است و برای اجرا باید کتابخانهی آن روی سیستم نصب باشد. برای بیشتر برنامهها تی ال اس سادهتر است و به چیزی بیرونی نیاز ندارد؛ این بسته برای وقتی است که رفتار دقیق OpenSSL را لازم دارید.
روند کار: یک زمینه بسازید، اتصال TCP را با پوشاندن به آن بدهید، برای کارخواه نام میزبان را تنظیم و اتصال برقرار کردن را صدا بزنید و بعد بخوانید و بنویسید.
گونهها
زمینه Context
ساختار زمینه| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| handle | handle | تهی* | اشارهگر OpenSSL. |
واردسازی اس اس ال
واردسازی شبکه.تی سی پی شبکه
روال ریشه:
ز := اس اس ال.زمینه جدید مشتری()
اگر وارونه اس اس ال.زمینه معتبر(ز):
سرچاپ اس اس ال.آخرین متن خطا()
برگشت
پایان
_ := اس اس ال.تنظیم کمینه نسخه(ز، اس اس ال.تی ال اس۱۳)
_ := اس اس ال.تنظیم مسیرهای پیشفرض تایید(ز)
ک := تی سی پی شبکه.شماره گیری("example.com"، ۴۴۳)
ا := اس اس ال.پوشاندن(ز، ک.fd)
_ := اس اس ال.تنظیم نام میزبان(ا، "example.com")
اگر وارونه اس اس ال.اتصال معتبر(ا) یا وارونه اس اس ال.اتصال برقرار کردن(ا):
سرچاپ "دستدهی ناموفق:"، اس اس ال.آخرین متن خطا()
برگشت
پایان
سرچاپ اس اس ال.طرف مقابل تاییدشده(ا)، اس اس ال.نتیجه تایید(ا) == اس اس ال.گواهی معتبر
ن := اس اس ال.نوشتن(ا، "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n")
اگر ن <= ۰:
سرچاپ "کد خطا:"، اس اس ال.کد خطا(ا، ن)
پایان
سرچاپ اس اس ال.خواندن(ا، ۴۰۹۶).طول() > ۰
اس اس ال.خاموش کردن(ا)
اس اس ال.بستن(ا)
اس اس ال.بستن زمینه(ز)
تی سی پی شبکه.بستن(ک)
پایاناتصال Conn
ساختار اتصال| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| handle | handle | تهی* | اشارهگر OpenSSL. |
نمونهی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam
پایاها و متغیرها
بدون تایید VERIFY_NONE
پایا بدون تایید: صحیح۳۲ = 0واردسازی اس اس ال
واردسازی شبکه.تی سی پی شبکه
روال ریشه:
ز := اس اس ال.زمینه جدید سرور("cert.pem"، "key.pem")
اگر وارونه اس اس ال.زمینه معتبر(ز):
سرچاپ اس اس ال.آخرین متن خطا()
برگشت
پایان
اس اس ال.تنظیم تایید(ز، اس اس ال.بدون تایید)
_ := اس اس ال.بارگذاری مکان تایید(ز، "clients-ca.pem")
اس اس ال.تنظیم تایید(ز، اس اس ال.تایید طرف مقابل)
سرچاپ اس اس ال.نوع فایل پم، اس اس ال.تی ال اس۱۲
س := تی سی پی شبکه.پیوند(۸۴۴۳)
تا درست:
ک := تی سی پی شبکه.پذیرش(س)
ا := اس اس ال.پوشاندن(ز، ک.fd)
اگر اس اس ال.پذیرش(ا):
درخواست := اس اس ال.خواندن(ا، ۴۰۹۶)
_ := اس اس ال.نوشتن(ا، "HTTP/1.1 200 OK\r\nContent-Length: " + درخواست.طول() + "\r\n\r\n" + درخواست)
پایان
اس اس ال.بستن(ا)
پایان
پایانتایید طرف مقابل VERIFY_PEER
پایا تایید طرف مقابل: صحیح۳۲ = 1نمونهی این مورد همراه با موارد بالاتر آمده است: ssl-Server.salam
نوع فایل پم FILETYPE_PEM
پایا نوع فایل پم: صحیح۳۲ = 1نمونهی این مورد همراه با موارد بالاتر آمده است: ssl-Server.salam
تی ال اس۱۲ TLS1_2
پایا تی ال اس۱۲: صحیح۳۲ = 771نمونهی این مورد همراه با موارد بالاتر آمده است: ssl-Server.salam
تی ال اس۱۳ TLS1_3
پایا تی ال اس۱۳: صحیح۳۲ = 772نمونهی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam
گواهی معتبر CERT_OK
پایا گواهی معتبر: صحیح۶۴ = 0نمونهی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam
روالها
کد خطا ErrorCode
روال کد خطا(c: اتصال، rc: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam
آخرین متن خطا LastErrorString
روال آخرین متن خطا(): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam
پوشاندن Wrap
روال پوشاندن(ctx: زمینه، fd: صحیح۶۴): اتصالنمونهی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam
اتصال معتبر ConnOk
روال اتصال معتبر(c: اتصال): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam
اتصال برقرار کردن Connect
روال اتصال برقرار کردن(c: اتصال): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam
پذیرش Accept
روال پذیرش(c: اتصال): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: ssl-Server.salam
خواندن Read
روال خواندن(c: اتصال، max: صحیح): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam
نوشتن Write
روال نوشتن(c: اتصال، data: رشته): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam
خاموش کردن Shutdown
روال خاموش کردن(c: اتصال)نمونهی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam
بستن Close
روال بستن(c: اتصال)نمونهی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam
تنظیم نام میزبان SetHostname
روال تنظیم نام میزبان(c: اتصال، host: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam
نتیجه تایید VerifyResult
روال نتیجه تایید(c: اتصال): صحیح۶۴نمونهی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam
طرف مقابل تاییدشده PeerVerified
روال طرف مقابل تاییدشده(c: اتصال): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam
زمینه جدید مشتری NewClientContext
روال زمینه جدید مشتری(): زمینهنمونهی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam
زمینه جدید سرور NewServerContext
روال زمینه جدید سرور(cert_file: رشته، key_file: رشته): زمینهنمونهی این مورد همراه با موارد بالاتر آمده است: ssl-Server.salam
زمینه معتبر CtxOk
روال زمینه معتبر(ctx: زمینه): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam
تنظیم تایید SetVerify
روال تنظیم تایید(ctx: زمینه، mode: صحیح)نمونهی این مورد همراه با موارد بالاتر آمده است: ssl-Server.salam
بارگذاری مکان تایید LoadVerifyLocationsFile
روال بارگذاری مکان تایید(ctx: زمینه، path: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: ssl-Server.salam
تنظیم مسیرهای پیشفرض تایید SetDefaultVerifyPaths
روال تنظیم مسیرهای پیشفرض تایید(ctx: زمینه): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam
تنظیم کمینه نسخه SetMinVersion
روال تنظیم کمینه نسخه(ctx: زمینه، version: صحیح۶۴): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam
بستن زمینه CloseContext
روال بستن زمینه(ctx: زمینه)نمونهی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam