پیش از هر چیز توصیه می کنم چنانچه با گواهی های امنیتی SSL آشنایی ندارید، مقاله “گواهی SSL چیست و چگونه کار می کند؟” را مطالعه نمایید.
گواهی های TLS خود امضا شده(Self-Signed)، برای کاربردهای شخصی و یا برای نرم افزارهایی که به صورت داخلی در یک سازمان استفاده می شوند، مناسب هستند.
در ادامه مراحل ایجاد گواهی را در چند گام ساده و در سیستم عامل لینوکس Debian بیان می کنم.
ایجاد گواهی
گام اول – ابتدا کاربر را به root تغییر داده و به پوشه ای بروید که تصمیم دارید گواهی و زوج کلید درون آن ساخته شود. این محل کاملا وابسته به نیاز شماست. در این مثال من مسیر /root/certs
را در نظر می گیرم.
su - root
mkdir /root/certs && cd /root/certs
گام دوم – گواهی را با استفاده از دستور زیر ایجاد نمایید:
openssl req -new -newkey rsa:4096 -x509 -sha256 -days 365 -nodes -out MyCertificate.crt -keyout MyKey.key
در صورت نیاز می توانید اطلاعات شناسایی در مورد وب سایت و یا سازمان خود را به گواهی اضافه کنید. از آنجایی که یگ گواهی خود امضا شده به صورت عمومی استفاده نمی شود، بنابراین این اطلاعات ضروری نیستند. اما اگر قرار است این گواهی به یک مرجع صدور گواهی برای امضا منتقل شود، لازم است که اطلاعات تا حد امکان دقیق باشند.
در ادامه گریزی به گزینه های استفاده شده در دستور OpenSSl می زنیم. گزینه های بسیار دیگری وجود دارند، اما با استفاده از همین موارد می توان یک گواهی پایه ایجاد کرد که برای یک سال مناسب است. برای کسب اطلاعات بیشتر در ترمینال سیستم عامل خود دستور man openssl
را مشاهده کنید.
-newkey rsa:4096
یک کلید RSA با ۴۰۹۶ بیت برای استفاده با گواهی ایجاد می کند. در اغلب نسخه های اخیر OpenSSl به صورت پیش فرض از کلید ۲۰۴۸ بیتی استفاده می شود، اما برای آنکه از طول کلید مطمئن باشید، باید در دستور خود آن را مشخص کنید.-x509
یک گواهی خود امضا شده ایجاد می کند.-sha256
گواهی را با استفاده از الگوریتم SHA (Secure Hash Algorithm) با طول ۲۵۶ بیت ایجاد می کند.–days
تعداد روزهایی را مشخص می کند که گواهی برای آن دوره ایجاد شده است. برای گواهی خود امضا شده، می توانید این مقدار را بر اساس نیاز افزایش دهید.–nodes
گواهی را بدون نیاز به کلمه عبور ایجاد می کند. چنانچه از این گزینه استفاده ننمایید، هر بار که برنامه می خواهد از آن استفاده کند، از شما خواسته می شود که کلمه عبور را در کنسول وارد نمایید.
نمونه ای از خروجی دستور به شکل زیر است:
root@localhost:~# openssl req -new -newkey rsa:4096 -x509 -sha256 -days 365 -nodes -out MyCertificate.crt -keyout MyKey.key
Generating a 4096 bit RSA private key
..............................................................................+++
..............................................+++
writing new private key to 'MyKey.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:PA
Locality Name (eg, city) []:Philadelphia
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Linode
Organizational Unit Name (eg, section) []:Docs
Common Name (e.g. server FQDN or YOUR name) []:hostname.example.com
Email Address []:admin@example.com
chmod 400 /root/certs/MyKey.key
گام سوم – مجوزهای کلیدها را به گونه ای محدود کنید که تنها کاربر root بتواند به آن هادسترسی داشته باشد:
گام چهارم – حتما از گواهی و کلید خود یک نسخه پشتیبان در یک ذخیره ساز خارجی تهیه نمایید. این گام مهمی است. آن را از قلم نیندازید!
منبع: Create a Self-Signed TLS Certificate
ترجمه: سیدمحمدحسین طباطبایی بالا
یک دیدگاه در “چگونه یک گواهی TLS خود امضا شده (Self-Signed) ایجاد کنیم؟”