OPENSSL-RSAUTL(1ssl) OpenSSL OPENSSL-RSAUTL(1ssl)

openssl-rsautl - ابزار RSA برای امضا و رمزگذاری

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]

این دستور منسوخ شده است. به جای آن باید از دستور openssl-pkeyutl(1) استفاده شود.

از این دستور می‌توان برای امضا، اعتبارسنجی، رمزگذاری و رمزگشایی داده‌ها با استفاده از الگوریتم RSA استفاده کرد.

نمایش یک پیام راهنمای نحوه استفاده.
نام فایل ورودی را برای خواندن داده‌ها مشخص می‌کند، یا در صورت مشخص نشدن این گزینه، از ورودی استاندارد استفاده می‌شود.
عبارت عبور مورد استفاده در فایل خروجی. به openssl-passphrase-options(1) مراجعه کنید.
معکوس کردن ترتیب ورودی.
نام فایل خروجی را برای نوشتن مشخص می‌کند؛ به‌طور پیش‌فرض در خروجی استاندارد نوشته می‌شود.
کلید ورودی؛ به‌طور پیش‌فرض باید یک کلید خصوصی RSA باشد.
قالب کلید؛ به‌طور پیش‌فرض مشخص نشده است. برای جزئیات بیشتر به openssl-format-options(1) مراجعه کنید.
به‌طور پیش‌فرض یک کلید خصوصی از ورودی کلید خوانده می‌شود. با این گزینه، در عوض یک کلید عمومی خوانده می‌شود. اگر ورودی حاوی کلید عمومی نباشد اما یک کلید خصوصی داشته باشد، از بخش عمومی آن استفاده می‌شود.
ورودی یک گواهی شامل یک کلید عمومی RSA است.
داده‌های ورودی را امضا کرده و نتیجه امضاشده را در خروجی قرار می‌دهد. این گزینه به یک کلید خصوصی RSA نیاز دارد.
اعتبارسنجی داده‌های ورودی و خروجی دادن داده‌های بازیابی‌شده.
رمزگذاری داده‌های ورودی با استفاده از یک کلید عمومی RSA.
رمزگشایی داده‌های ورودی با استفاده از یک کلید خصوصی RSA.
پدینگ مورد استفاده: به ترتیب PKCS#1 v1.5 (پیش‌فرض)، PKCS#1 OAEP، ANSI X9.31 یا بدون پدینگ. برای امضاها، فقط -pkcs و -raw قابل استفاده هستند.

نکته: به دلیل محافظت در برابر حملات Bleichenbacher، در صورت ناموفق بودن بررسی پدینگ، رمزگشایی با استفاده از حالت PKCS#1 v1.5 خطایی بازنمی‌گرداند. از -raw استفاده کرده و مقدار بازگردانده‌شده را به‌صورت دستی بررسی کنید تا از درستی پدینگ مطمئن شوید.

تولید خروجی هگزادسیمال (hexdump) از داده‌ها.
تجزیه داده‌های خروجی ASN.1؛ این گزینه هنگام ترکیب با گزینه -verify مفید است.
به «Engine Options» در openssl(1) مراجعه کنید. این گزینه منسوخ شده است.
برای جزئیات بیشتر به «Random State Options» در openssl(1) مراجعه کنید.
برای جزئیات بیشتر به بخش «گزینه‌های فراهم‌کننده» (Provider Options) در openssl(1)، provider(7) و property(7) مراجعه کنید.

از آنجا که این دستور مستقیماً از الگوریتم RSA استفاده می‌کند، فقط برای امضا یا اعتبارسنجی قطعات کوچک داده قابل استفاده است.

مثال‌های معادل این موارد را می‌توان در مستندات دستور غیرمنسوخ 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

که همان‌طور که مشاهده می‌شود با مقدار بازیابی‌شده بالا مطابقت دارد.

openssl(1), openssl-pkeyutl(1), openssl-dgst(1), openssl-rsa(1), openssl-genrsa(1)

این دستور در OpenSSL 3.0 منسوخ شد.

گزینه -engine در OpenSSL 3.0 منسوخ شد.

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