| gnutls-serv(1) | User Commands | gnutls-serv(1) |
نام (NAME)
gnutls-serv - کارگزار GnuTLS
خلاصه دستور (SYNOPSIS)
gnutls-serv [-flags] [-flag [value]] [--option-name[[=| ]value]]
تمامی آرگومانها باید از نوع گزینه باشند.
توضیحات (DESCRIPTION)
برنامه کارگزاری که به اتصالات ورودی TLS گوش فرا میدهد. توجه داشته باشید که این برنامه تنها برای اهداف آزمایشی و عیبیابی در نظر گرفته شده است.
گزینهها (OPTIONS)
- -d num, --debug=num
-
فعالسازی اشکالزدایی. این گزینه یک عدد صحیح را به عنوان آرگومان دریافت میکند. مقدار num محدود به موارد زیر است:
در محدوده 0 تا 9999
سطح اشکالزدایی را مشخص میکند.
- --sni-hostname=str
-
نام میزبان کارگزار برای افزونه نام سرور (SNI).نام سرور از نوع host_name که کارگزار آن را به عنوان نام خود تشخیص میدهد. اگر کارگزار پیام client hello را با نام متفاوتی دریافت کند، یک هشدار unrecognized_name در سطح اخطار (warning-level) ارسال خواهد کرد.
- --sni-hostname-fatal
-
ارسال هشدار مهلک (fatal alert) در صورت عدم تطابق sni-hostname. - --alpn=str
-
مشخص کردن پروتکل ALPN برای فعالسازی توسط کارگزار. این گزینه میتواند به تعداد نامحدود تکرار شود.مشخص کردن پروتکل ALPN (متنی) برای استفاده توسط کارگزار.
- --alpn-fatal
-
ارسال هشدار مهلک (fatal alert) در صورت عدم تطابق نام ALPN. - --noticket
-
عدم پذیرش بلیتهای نشست (session tickets). - --earlydata
-
پذیرش دادههای اولیه (early data). - --maxearlydata=num
-
حداکثر اندازه دادههای اولیه (early data) قابل پذیرش. این گزینه یک عدد صحیح را به عنوان آرگومان دریافت میکند. مقدار num محدود به موارد زیر است:
در محدوده 1 تا 2147483648
-
الزامی نبودن کوکی در نشستهای DTLS. - -g, --generate
-
تولید پارامترهای دیفی-هلمن (Diffie-Hellman). - -q, --quiet
-
فرونشاندن برخی پیامها. - --nodb
-
عدم استفاده از پایگاه داده ازسرگیری نشست (resumption database). - --http
-
عملکرد به عنوان یک کارگزار HTTP. - --echo
-
عملکرد به عنوان یک کارگزار Echo (پژواک). - --crlf
-
عدم جایگزینی CRLF با LF در حالت کارگزار Echo. - -u, --udp
-
استفاده از DTLS (دیتاگرام TLS) بر بستر UDP. - --mtu=num
-
تنظیم MTU برای دیتاگرام TLS. این گزینه یک عدد صحیح را به عنوان آرگومان دریافت میکند. مقدار num محدود به موارد زیر است:
در محدوده 0 تا 17000
- --srtp-profiles=str
-
ارائه نمایههای SRTP. - -a, --disable-client-cert
-
درخواست نکردن گواهی کلاینت. این گزینه نباید در ترکیب با هیچیک از گزینههای زیر استفاده شود: require-client-cert. - -r, --require-client-cert
-
الزام گواهی کلاینت.این گزینه پیش از نسخه 3.6.0 به معنای گزینه --verify-client-cert بود. از نسخه 3.6.0 به بعد، دیگر گواهی را به صورت پیشفرض اعتبارسنجی نمیکند.
- --verify-client-cert
-
در صورت ارسال گواهی کلاینت، اعتبارسنجی آن را انجام بده.گواهی را الزامی نمیکند، اما اگر گواهی کلاینت ارسال شود آن را اعتبارسنجی کرده و در صورت نامعتبر بودن، اتصال را میبندد.
- --compress-cert=str
-
فشردهسازی گواهی. این گزینه میتواند به تعداد نامحدود تکرار شود.این گزینه یک روش فشردهسازی پشتیبانیشده را برای فشردهسازی گواهی تعیین میکند.
- -b, --heartbeat
-
فعالسازی پشتیبانی از ضربان قلب (heartbeat).ارسال منظم پیامهای پینگ به کلاینت از طریق پیامهای افزونه ضربان قلب (heartbeat).
- --x509fmtder
-
استفاده از قالب DER برای خواندن گواهیها. - --priority=str
-
رشته اولویتها (Priorities string).الگوریتمها و پروتکلهای TLS برای فعالسازی. میتوانید از مجموعههای پیشتعریفشده سوئیتهای رمزنگاری مانند PERFORMANCE، NORMAL، SECURE128 و SECURE256 استفاده کنید. مقدار پیشفرض NORMAL است.
برای اطلاعات بیشتر در مورد کلمات کلیدی مجاز، بخش “Priority strings” را در راهنمای GnuTLS بررسی کنید.
- --dhparams=file
-
فایل پارامترهای DH (دیفی-هلمن) مورد استفاده. - --x509cafile=str
-
فایل گواهی یا نشانی اینترنتی (URL) استاندارد PKCS #11 مورد استفاده. - --x509crlfile=file
-
فایل CRL مورد استفاده. - --pgpkeyfile=file
-
فایل کلید PGP مورد استفاده.نکته: این گزینه منسوخ شده است.
- --x509keyfile=str
-
فایل کلید X.509 یا نشانی اینترنتی (URL) استاندارد PKCS #11 مورد استفاده. این گزینه میتواند به تعداد نامحدود تکرار شود.فایل کلید خصوصی یا URI مورد استفاده را مشخص میکند؛ این کلید باید با گواهی مشخصشده در --x509certfile مطابقت داشته باشد. با این گزینه میتوان چندین کلید و گواهی را مشخص کرد و در این صورت، هر تکرار از keyfile باید توسط x509certfile متناظر دنبال شود یا برعکس.
- --x509certfile=str
-
فایل گواهی X.509 یا نشانی اینترنتی (URL) استاندارد PKCS #11 مورد استفاده. این گزینه میتواند به تعداد نامحدود تکرار شود.فایل گواهی یا URI مورد استفاده را مشخص میکند؛ این گواهی باید با کلید مشخصشده در --x509keyfile مطابقت داشته باشد. با این گزینه میتوان چندین کلید و گواهی را مشخص کرد و در این صورت، هر تکرار از keyfile باید توسط x509certfile متناظر دنبال شود یا برعکس.
- --x509dsakeyfile
-
این یک نام مستعار برای گزینه --x509keyfile است.نکته: این گزینه منسوخ شده است.
- --x509dsacertfile
-
این یک نام مستعار برای گزینه --x509certfile است.نکته: این گزینه منسوخ شده است.
- --x509ecckeyfile
-
این یک نام مستعار برای گزینه --x509keyfile است.نکته: این گزینه منسوخ شده است.
- --x509ecccertfile
-
این یک نام مستعار برای گزینه --x509certfile است.نکته: این گزینه منسوخ شده است.
- --rawpkkeyfile=str
-
فایل کلید خصوصی (PKCS #8 یا PKCS #12) یا نشانی اینترنتی PKCS #11 مورد استفاده. این گزینه میتواند به تعداد نامحدود تکرار شود.فایل کلید خصوصی یا URI مورد استفاده را مشخص میکند؛ این کلید باید با کلید عمومی خام مشخصشده در --rawpkfile مطابقت داشته باشد. با این گزینه میتوان چندین جفتکلید را مشخص کرد و در این صورت، هر تکرار از keyfile باید توسط rawpkfile متناظر دنبال شود یا برعکس.
برای هدایت برنامه به مذاکره بر سر کلیدهای عمومی خام، باید انواع گواهی مربوطه را از طریق رشتههای اولویت (مانند فلگهای CTYPE-CLI-* و CTYPE-SRV-*) فعال کرد.
برای اطلاعات بیشتر در مورد نحوه تنظیم انواع گواهی، بخش “Priority strings” را در راهنمای GnuTLS بررسی کنید.
- --rawpkfile=str
-
فایل کلید عمومی خام (Raw public-key) مورد استفاده. این گزینه میتواند به تعداد نامحدود تکرار شود. این گزینه باید در ترکیب با گزینه زیر استفاده شود: rawpkkeyfile.فایل کلید عمومی خام مورد استفاده را مشخص میکند؛ این فایل باید با کلید خصوصی مشخصشده در --rawpkkeyfile مطابقت داشته باشد. با این گزینه میتوان چندین جفتکلید را مشخص کرد و در این صورت، هر تکرار از keyfile باید توسط rawpkfile متناظر دنبال شود یا برعکس.
برای هدایت برنامه به مذاکره بر سر کلیدهای عمومی خام، باید انواع گواهی مربوطه را از طریق رشتههای اولویت (مانند فلگهای CTYPE-CLI-* و CTYPE-SRV-*) فعال کرد.
برای اطلاعات بیشتر در مورد نحوه تنظیم انواع گواهی، بخش “Priority strings” را در راهنمای GnuTLS بررسی کنید.
- --srppasswd=file
-
فایل گذرواژه SRP مورد استفاده. - --srppasswdconf=file
-
فایل پیکربندی گذرواژه SRP مورد استفاده. - --pskpasswd=file
-
فایل گذرواژه PSK مورد استفاده. - --pskhint=str
-
راهنمای هویت (Identity hint) برای PSK جهت استفاده. - --ocsp-response=str
-
پاسخ OCSP جهت ارسال به کلاینت. این گزینه میتواند به تعداد نامحدود تکرار شود.اگر کلاینت درخواست پاسخ OCSP کرده باشد، دادههای این فایل به کلاینت بازگردانده میشود.
- --ignore-ocsp-response-errors
-
نادیده گرفتن هرگونه خطا هنگام تنظیم پاسخ OCSP.این گزینه به gnutls دستور میدهد که تلاشی برای تطبیق پاسخهای OCSP ارائهشده با گواهیها انجام ندهد.
- -p num, --port=num
-
درگاهی (پورت) که باید به آن متصل شد. این گزینه یک عدد صحیح را به عنوان آرگومان دریافت میکند. - -l, --list
-
چاپ فهرستی از الگوریتمها و حالتهای پشتیبانیشده.فهرستی از الگوریتمها و حالتهای پشتیبانیشده را چاپ میکند. اگر یک رشته اولویت داده شود، تنها مجموعهرمزهای فعالشده نشان داده میشوند.
- --provider=file
-
مشخص کردن کتابخانه ارائهدهنده (provider) استاندارد PKCS #11.این گزینه مقادیر پیشفرض در /etc/gnutls/pkcs11.conf را بازنویسی (override) میکند.
- --keymatexport=str
-
برچسب مورد استفاده برای صدور متریال کلیدسازی (keying material). - --keymatexportsize=num
-
اندازه متریال کلیدسازی صادرشده. این گزینه یک عدد صحیح را به عنوان آرگومان دریافت میکند. - --recordsize=num
-
حداکثر اندازه رکورد برای اعلان کردن. این گزینه یک عدد صحیح را به عنوان آرگومان دریافت میکند. مقدار num محدود به موارد زیر است:
در محدوده 0 تا 16384
- --httpdata=file
-
دادههای مورد استفاده به عنوان پاسخ HTTP. - --timeout=num
-
مدت زمان مهلت زمانی (timeout) برای کارگزار. این گزینه یک عدد صحیح را به عنوان آرگومان دریافت میکند. - --attime=timestamp
-
انجام اعتبارسنجی در برچسب زمانی به جای زمان سیستم.برچسب زمانی یک لحظه زمانی است که به صورت زمان یونیکس (Unix time) یا در قالب یک رشته زمانی خوانا برای انسان مانند "29 Feb 2004" یا "2004-02-29" کدگذاری شده است. مستندات کامل در نشانی زیر https://www.gnu.org/software/coreutils/manual/html_node/Date-input-formats.html یا به صورت محلی با اجرای 'info '(coreutils) date invocation در دسترس است.
- -v arg, --version=arg
-
نمایش نسخه برنامه و خروج. حالت پیشفرض `v` است که نسخهای ساده را نمایش میدهد. حالت `c` اطلاعات کپیرایت را نمایش میدهد و `n` کل اعلان کپیرایت را چاپ میکند. - -h, --help
-
نمایش اطلاعات نحوه استفاده و خروج. - -!, --more-help
-
ارسال اطلاعات مبسوط نحوه استفاده از طریق یک صفحهبندیکننده (pager).
مثالها (EXAMPLES)
اجرای کارگزار TLS اختصاصی خود مبتنی بر GnuTLS میتواند هنگام اشکالزدایی کلاینتها یا خود GnuTLS مفید باشد. این بخش نحوه استفاده از gnutls-serv را به عنوان یک کارگزار ساده HTTPS شرح میدهد.
سادهترین حالت کارگزار میتواند به این صورت راهاندازی شود:
gnutls-serv --http --priority "NORMAL:+ANON-ECDH:+ANON-DH"
این حالت تنها از مجموعهرمزهای ناشناس پشتیبانی میکند که بسیاری از کلاینتهای TLS از استفاده از آنها خودداری میکنند.
مرحله بعدی افزودن پشتیبانی از X.509 است. ابتدا یک مرجع صدور گواهی (CA) تولید میکنیم:
$ certtool --generate-privkey > x509-ca-key.pem $ echo 'cn = GnuTLS test CA' > ca.tmpl $ echo 'ca' >> ca.tmpl $ echo 'cert_signing_key' >> ca.tmpl $ certtool --generate-self-signed --load-privkey x509-ca-key.pem --template ca.tmpl --outfile x509-ca.pem
سپس یک گواهی کارگزار تولید کنید. به یاد داشته باشید که مقدار dns_name را به نام میزبان کارگزار خود تغییر دهید، یا آن دستور را نادیده بگیرید تا این فیلد ایجاد نشود.
$ certtool --generate-privkey > x509-server-key.pem $ echo 'organization = GnuTLS test server' > server.tmpl $ echo 'cn = test.gnutls.org' >> server.tmpl $ echo 'tls_www_server' >> server.tmpl $ echo 'encryption_key' >> server.tmpl $ echo 'signing_key' >> server.tmpl $ echo 'dns_name = test.gnutls.org' >> server.tmpl $ certtool --generate-certificate --load-privkey x509-server-key.pem --load-ca-certificate x509-ca.pem --load-ca-privkey x509-ca-key.pem --template server.tmpl --outfile x509-server.pem
برای استفاده در کلاینت، ممکن است بخواهید یک گواهی کلاینت نیز تولید کنید.
$ certtool --generate-privkey > x509-client-key.pem $ echo 'cn = GnuTLS test client' > client.tmpl $ echo 'tls_www_client' >> client.tmpl $ echo 'encryption_key' >> client.tmpl $ echo 'signing_key' >> client.tmpl $ certtool --generate-certificate --load-privkey x509-client-key.pem --load-ca-certificate x509-ca.pem --load-ca-privkey x509-ca-key.pem --template client.tmpl --outfile x509-client.pem
برای اینکه بتوانید کلید/گواهی کلاینت را به برخی از برنامهها وارد (import) کنید، باید آنها را به یک ساختار PKCS#12 تبدیل کنید. این کار همچنین کلید حساس امنیتی را با یک گذرواژه رمزگذاری میکند.
$ certtool --to-p12 --load-ca-certificate x509-ca.pem --load-privkey x509-client-key.pem --load-certificate x509-client.pem --outder --outfile x509-client.p12
برای تکمیل کار، یک گواهی پروکسی نیز برای کلاینت ایجاد میکنیم.
$ certtool --generate-privkey > x509-proxy-key.pem $ echo 'cn = GnuTLS test client proxy' > proxy.tmpl $ certtool --generate-proxy --load-privkey x509-proxy-key.pem --load-ca-certificate x509-client.pem --load-ca-privkey x509-client-key.pem --load-certificate x509-client.pem --template proxy.tmpl --outfile x509-proxy.pem
سپس کارگزار را دوباره راهاندازی کنید:
$ gnutls-serv --http --x509cafile x509-ca.pem --x509keyfile x509-server-key.pem --x509certfile x509-server.pem
سعی کنید با استفاده از مرورگر وب خود به کارگزار متصل شوید. توجه داشته باشید که کارگزار به طور پیشفرض به درگاه 5556 گوش میدهد.
در همین حین، برای فراهم کردن امکان برقراری اتصال با استفاده از ECDSA، میتوانید یک کلید و گواهی ECDSA نیز برای کارگزار بسازید. این اطلاعات اعتباری در آخرین مثال زیر استفاده خواهند شد.
$ certtool --generate-privkey --ecdsa > x509-server-key-ecc.pem $ certtool --generate-certificate --load-privkey x509-server-key-ecc.pem --load-ca-certificate x509-ca.pem --load-ca-privkey x509-ca-key.pem --template server.tmpl --outfile x509-server-ecc.pem
مرحله بعدی افزودن پشتیبانی از احراز هویت SRP است. این کار به یک فایل گذرواژه SRP که توسط srptool ایجاد شده باشد نیاز دارد. برای راهاندازی کارگزار با پشتیبانی از SRP:
gnutls-serv --http --priority NORMAL:+SRP-RSA:+SRP --srppasswdconf srp-tpasswd.conf --srppasswd srp-passwd.txt
بیایید یک کارگزار با پشتیبانی از PSK نیز راهاندازی کنیم. این کار نیازمند یک فایل گذرواژه ایجادشده با psktool خواهد بود.
gnutls-serv --http --priority NORMAL:+ECDHE-PSK:+PSK --pskpasswd psk-passwd.txt
اگر کارگزاری با پشتیبانی از کلیدهای عمومی خام (raw public-keys) میخواهید، میتوانیم این اطلاعات اعتباری را نیز اضافه کنیم. البته توجه داشته باشید که برخلاف گواهیهای معمول x509، هیچ اطلاعات هویتی پیوستشدهای به این کلیدها وجود ندارد. احراز هویت باید از روشهای دیگری انجام شود. همچنین باید به طور صریح گواهیهای کلید عمومی خام را از طریق رشتههای اولویت فعال کنیم.
gnutls-serv --http --priority NORMAL:+CTYPE-CLI-RAWPK:+CTYPE-SRV-RAWPK --rawpkfile srv.rawpk.pem --rawpkkeyfile srv.key.pem
در نهایت، کارگزار را با تمامی پارامترهای پیشین راهاندازی میکنیم که به این دستور تبدیل میشود:
gnutls-serv --http --priority NORMAL:+PSK:+SRP:+CTYPE-CLI-RAWPK:+CTYPE-SRV-RAWPK --x509cafile x509-ca.pem --x509keyfile x509-server-key.pem --x509certfile x509-server.pem --x509keyfile x509-server-key-ecc.pem --x509certfile x509-server-ecc.pem --srppasswdconf srp-tpasswd.conf --srppasswd srp-passwd.txt --pskpasswd psk-passwd.txt --rawpkfile srv.rawpk.pem --rawpkkeyfile srv.key.pem
وضعیت خروج (EXIT STATUS)
یکی از مقادیر خروج زیر بازگردانده خواهد شد:
- 0 (EXIT_SUCCESS)
-
اجرای موفقیتآمیز برنامه. - 1 (EXIT_FAILURE)
-
عملیات شکست خورد یا نحو دستور نامعتبر بود.
همچنین ببینید (SEE ALSO)
نویسندگان (AUTHORS)
توسعهدهندگان پروژه GnuTLS و همکاران.
کپیرایت (COPYRIGHT)
حق نشر © 2020-2023 بنیاد نرمافزار آزاد و دیگران، تمامی حقوق محفوظ است. این برنامه تحت شرایط مجوز عمومی همگانی گنو، نسخه ۳ یا بالاتر منتشر شده است.
گزارش باگها (REPORTING BUGS)
لطفاً گزارشهای اشکال را به این نشانی ارسال کنید: bugs@gnutls.org
| 29 Apr 2026 | 3.8.13 |