| OPENSSL-RSAUTL(1ssl) | OpenSSL | OPENSSL-RSAUTL(1ssl) |
نام (NAME)
openssl-rsautl - ابزار RSA برای امضا و رمزگذاری
خلاصه دستور (SYNOPSIS)
openssl rsautl [-help] [-in file] [-passin arg] [-rev] [-out file] [-inkey filename|uri] [-keyform DER|PEM|P12|ENGINE] [-pubin] [-certin] [-sign] [-verify] [-encrypt] [-decrypt] [-pkcs] [-x931] [-oaep] [-raw] [-hexdump] [-asn1parse] [-engine id] [-rand files] [-writerand file] [-provider name] [-provider-path path] [-provparam [name:]key=value] [-propquery propq]
توضیحات (DESCRIPTION)
این دستور منسوخ شده است. به جای آن باید از دستور openssl-pkeyutl(1) استفاده شود.
از این دستور میتوان برای امضا، اعتبارسنجی، رمزگذاری و رمزگشایی دادهها با استفاده از الگوریتم RSA استفاده کرد.
گزینهها (OPTIONS)
- -help
- نمایش یک پیام راهنمای نحوه استفاده.
- -in filename
- نام فایل ورودی را برای خواندن دادهها مشخص میکند، یا در صورت مشخص نشدن این گزینه، از ورودی استاندارد استفاده میشود.
- -passin arg
- عبارت عبور مورد استفاده در فایل خروجی. به openssl-passphrase-options(1) مراجعه کنید.
- -rev
- معکوس کردن ترتیب ورودی.
- -out filename
- نام فایل خروجی را برای نوشتن مشخص میکند؛ بهطور پیشفرض در خروجی استاندارد نوشته میشود.
- -inkey filename|uri
- کلید ورودی؛ بهطور پیشفرض باید یک کلید خصوصی RSA باشد.
- -keyform DER|PEM|P12|ENGINE
- قالب کلید؛ بهطور پیشفرض مشخص نشده است. برای جزئیات بیشتر به openssl-format-options(1) مراجعه کنید.
- -pubin
- بهطور پیشفرض یک کلید خصوصی از ورودی کلید خوانده میشود. با این گزینه، در عوض یک کلید عمومی خوانده میشود. اگر ورودی حاوی کلید عمومی نباشد اما یک کلید خصوصی داشته باشد، از بخش عمومی آن استفاده میشود.
- -certin
- ورودی یک گواهی شامل یک کلید عمومی RSA است.
- -sign
- دادههای ورودی را امضا کرده و نتیجه امضاشده را در خروجی قرار میدهد. این گزینه به یک کلید خصوصی RSA نیاز دارد.
- -verify
- اعتبارسنجی دادههای ورودی و خروجی دادن دادههای بازیابیشده.
- -encrypt
- رمزگذاری دادههای ورودی با استفاده از یک کلید عمومی RSA.
- -decrypt
- رمزگشایی دادههای ورودی با استفاده از یک کلید خصوصی RSA.
- -pkcs, -oaep, -x931, -raw
- پدینگ مورد
استفاده: به
ترتیب PKCS#1 v1.5
(پیشفرض)، PKCS#1
OAEP، ANSI X9.31 یا بدون
پدینگ. برای
امضاها،
فقط -pkcs و -raw
قابل
استفاده
هستند.
نکته: به دلیل محافظت در برابر حملات Bleichenbacher، در صورت ناموفق بودن بررسی پدینگ، رمزگشایی با استفاده از حالت PKCS#1 v1.5 خطایی بازنمیگرداند. از -raw استفاده کرده و مقدار بازگرداندهشده را بهصورت دستی بررسی کنید تا از درستی پدینگ مطمئن شوید.
- -hexdump
- تولید خروجی هگزادسیمال (hexdump) از دادهها.
- -asn1parse
- تجزیه دادههای خروجی ASN.1؛ این گزینه هنگام ترکیب با گزینه -verify مفید است.
- -engine id
- به «Engine Options» در openssl(1) مراجعه کنید. این گزینه منسوخ شده است.
- -rand files, -writerand file
- برای جزئیات بیشتر به «Random State Options» در openssl(1) مراجعه کنید.
- -provider name
- -provider-path path
- -provparam [name:]key=value
- -propquery propq
- برای جزئیات بیشتر به بخش «گزینههای فراهمکننده» (Provider Options) در openssl(1)، provider(7) و property(7) مراجعه کنید.
نکات (NOTES)
از آنجا که این دستور مستقیماً از الگوریتم RSA استفاده میکند، فقط برای امضا یا اعتبارسنجی قطعات کوچک داده قابل استفاده است.
مثالها (EXAMPLES)
مثالهای معادل این موارد را میتوان در مستندات دستور غیرمنسوخ openssl-pkeyutl(1) یافت.
امضای دادهها با استفاده از یک کلید خصوصی:
openssl rsautl -sign -in file -inkey key.pem -out sig
بازیابی دادههای امضاشده:
openssl rsautl -verify -in sig -inkey key.pem
بررسی دادههای امضاشده خام:
openssl rsautl -verify -in sig -inkey key.pem -raw -hexdump 0000 - 00 01 ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................ 0010 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................ 0020 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................ 0030 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................ 0040 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................ 0050 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................ 0060 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................ 0070 - ff ff ff ff 00 68 65 6c-6c 6f 20 77 6f 72 6c 64 .....hello world
قالببندی بلوک PKCS#1 از این خروجی کاملاً مشهود است. اگر این کار با استفاده از encrypt و decrypt انجام میشد، بلوک از نوع ۲ (بایت دوم) بود و دادههای پدینگ تصادفی به جای بایتهای 0xff مشاهده میشد.
میتوان امضای گواهیها را با استفاده از این دستور همراه با openssl-asn1parse(1) تحلیل کرد. مثال خودامضاشده در certs/pca-cert.pem را در نظر بگیرید. اجرای openssl-asn1parse(1) به صورت زیر خروجی زیر را به دست میدهد:
openssl asn1parse -in pca-cert.pem 0:d=0 hl=4 l= 742 cons: SEQUENCE 4:d=1 hl=4 l= 591 cons: SEQUENCE 8:d=2 hl=2 l= 3 cons: cont [ 0 ] 10:d=3 hl=2 l= 1 prim: INTEGER :02 13:d=2 hl=2 l= 1 prim: INTEGER :00 16:d=2 hl=2 l= 13 cons: SEQUENCE 18:d=3 hl=2 l= 9 prim: OBJECT :md5WithRSAEncryption 29:d=3 hl=2 l= 0 prim: NULL 31:d=2 hl=2 l= 92 cons: SEQUENCE 33:d=3 hl=2 l= 11 cons: SET 35:d=4 hl=2 l= 9 cons: SEQUENCE 37:d=5 hl=2 l= 3 prim: OBJECT :countryName 42:d=5 hl=2 l= 2 prim: PRINTABLESTRING :AU .... 599:d=1 hl=2 l= 13 cons: SEQUENCE 601:d=2 hl=2 l= 9 prim: OBJECT :md5WithRSAEncryption 612:d=2 hl=2 l= 0 prim: NULL 614:d=1 hl=3 l= 129 prim: BIT STRING
بخش پایانی BIT STRING حاوی امضای اصلی است. این مقدار را میتوان با دستور زیر استخراج کرد:
openssl asn1parse -in pca-cert.pem -out sig -noout -strparse 614
کلید عمومی گواهی را میتوان با دستور زیر استخراج کرد:
openssl x509 -in test/testx509.pem -pubkey -noout >pubkey.pem
امضا را میتوان با دستور زیر تحلیل کرد:
openssl rsautl -in sig -verify -asn1parse -inkey pubkey.pem -pubin
0:d=0 hl=2 l= 32 cons: SEQUENCE
2:d=1 hl=2 l= 12 cons: SEQUENCE
4:d=2 hl=2 l= 8 prim: OBJECT :md5
14:d=2 hl=2 l= 0 prim: NULL
16:d=1 hl=2 l= 16 prim: OCTET STRING
0000 - f3 46 9e aa 1a 4a 73 c9-37 ea 93 00 48 25 08 b5 .F...Js.7...H%..
این نسخه تجزیهشده ساختار DigestInfo در ASN1 است. همانطور که دیده میشود، خلاصه پیام استفادهشده md5 بوده است. بخش اصلی گواهی که امضا شده است را میتوان با دستور زیر استخراج کرد:
openssl asn1parse -in pca-cert.pem -out tbs -noout -strparse 4
و خلاصه پیام آن با دستور زیر محاسبه میشود:
openssl md5 -c tbs MD5(tbs)= f3:46:9e:aa:1a:4a:73:c9:37:ea:93:00:48:25:08:b5
که همانطور که مشاهده میشود با مقدار بازیابیشده بالا مطابقت دارد.
همچنین ببینید (SEE ALSO)
openssl(1), openssl-pkeyutl(1), openssl-dgst(1), openssl-rsa(1), openssl-genrsa(1)
تاریخچه (HISTORY)
این دستور در OpenSSL 3.0 منسوخ شد.
گزینه -engine در OpenSSL 3.0 منسوخ شد.
حق نشر (COPYRIGHT)
Copyright 2000-2023 The OpenSSL Project Authors. All Rights Reserved.
تحت مجوز آپاچی نسخه ۲.۰ (Apache License 2.0) منتشر شده است («مجوز»). شما نمیتوانید از این فایل جز در انطباق با این مجوز استفاده کنید. میتوانید نسخهای از مجوز را در فایل LICENSE در توزیع منبع یا در https://www.openssl.org/source/license.html دریافت کنید.
| 2026-08-25 | 3.6.4 |