کتابخانه‌ی استاندارد · امنیت و رمزنگاری

اس اس ال ssl

اتصال امن با کتابخانه‌ی OpenSSL سیستم.

واردسازی اس اس ال

این بسته پوششی نازک روی OpenSSL است و برای اجرا باید کتابخانه‌ی آن روی سیستم نصب باشد. برای بیشتر برنامه‌ها تی ال اس ساده‌تر است و به چیزی بیرونی نیاز ندارد؛ این بسته برای وقتی است که رفتار دقیق OpenSSL را لازم دارید.

روند کار: یک زمینه بسازید، اتصال TCP را با پوشاندن به آن بدهید، برای کارخواه نام میزبان را تنظیم و اتصال برقرار کردن را صدا بزنید و بعد بخوانید و بنویسید.

گونه‌ها

زمینه Context

ساختار زمینه
زمینه‌ی OpenSSL، مشترک میان اتصال‌ها.
نامانگلیسیگونهتوضیح
handlehandleتهی*اشاره‌گر OpenSSL.
ssl-Client.salam
واردسازی اس اس ال
واردسازی شبکه.تی سی پی شبکه

روال ریشه:
    ز := اس اس ال.زمینه جدید مشتری()
    اگر وارونه اس اس ال.زمینه معتبر(ز):
        سرچاپ اس اس ال.آخرین متن خطا()
        برگشت
    پایان
    _ := اس اس ال.تنظیم کمینه نسخه(ز، اس اس ال.تی ال اس۱۳)
    _ := اس اس ال.تنظیم مسیرهای پیش‌فرض تایید(ز)
    ک := تی سی پی شبکه.شماره گیری("example.com"، ۴۴۳)
    ا := اس اس ال.پوشاندن(ز، ک.fd)
    _ := اس اس ال.تنظیم نام میزبان(ا، "example.com")
    اگر وارونه اس اس ال.اتصال معتبر(ا) یا وارونه اس اس ال.اتصال برقرار کردن(ا):
        سرچاپ "دست‌دهی ناموفق:"، اس اس ال.آخرین متن خطا()
        برگشت
    پایان
    سرچاپ اس اس ال.طرف مقابل تاییدشده(ا)، اس اس ال.نتیجه تایید(ا) == اس اس ال.گواهی معتبر
    ن := اس اس ال.نوشتن(ا، "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n")
    اگر ن <= ۰:
        سرچاپ "کد خطا:"، اس اس ال.کد خطا(ا، ن)
    پایان
    سرچاپ اس اس ال.خواندن(ا، ۴۰۹۶).طول() > ۰
    اس اس ال.خاموش‌ کردن(ا)
    اس اس ال.بستن(ا)
    اس اس ال.بستن زمینه(ز)
    تی سی پی شبکه.بستن(ک)
پایان

اتصال Conn

ساختار اتصال
یک اتصال OpenSSL.
نامانگلیسیگونهتوضیح
handlehandleتهی*اشاره‌گر OpenSSL.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam

پایاها و متغیرها

بدون تایید VERIFY_NONE

پایا بدون تایید: صحیح۳۲ = 0
حالت بررسی: بدون بررسی.
ssl-Server.salam
واردسازی اس اس ال
واردسازی شبکه.تی سی پی شبکه

روال ریشه:
    ز := اس اس ال.زمینه جدید سرور("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
نوع پرونده‌ی PEM.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ssl-Server.salam

تی ال اس۱۲ TLS1_2

پایا تی ال اس۱۲: صحیح۳۲ = 771
شماره‌ی نسخه‌ی TLS 1.2.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ssl-Server.salam

تی ال اس۱۳ TLS1_3

پایا تی ال اس۱۳: صحیح۳۲ = 772
شماره‌ی نسخه‌ی TLS 1.3.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam

گواهی معتبر CERT_OK

پایا گواهی معتبر: صحیح۶۴ = 0
نتیجه‌ی بررسی: گواهی معتبر است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam

روال‌ها

کد خطا ErrorCode

روال کد خطا(c: اتصال، rc: صحیح): صحیح
کد خطای OpenSSL برای نتیجه‌ی یک خواندن یا نوشتن.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam

آخرین متن خطا LastErrorString

روال آخرین متن خطا(): رشته
متن آخرین خطای OpenSSL.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam

پوشاندن Wrap

روال پوشاندن(ctx: زمینه، fd: صحیح۶۴): اتصال
اتصال SSL تازه روی یک سوکت باز می‌سازد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: 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: رشته): منطقی
نام میزبان را برای SNI و بررسی گواهی تعیین می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam

نتیجه تایید VerifyResult

روال نتیجه تایید(c: اتصال): صحیح۶۴
نتیجه‌ی بررسی گواهی طرف مقابل.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam

طرف مقابل تاییدشده PeerVerified

روال طرف مقابل تاییدشده(c: اتصال): منطقی
گواهی طرف مقابل بررسی و پذیرفته شد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam

زمینه جدید مشتری NewClientContext

روال زمینه جدید مشتری(): زمینه
زمینه‌ی کارخواه با کمینه‌ی TLS 1.2، بررسی گواهی و ریشه‌های سیستم.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: 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: صحیح۶۴): منطقی
کمینه‌ی نسخه‌ی TLS.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam

بستن زمینه CloseContext

روال بستن زمینه(ctx: زمینه)
زمینه را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: ssl-Client.salam